Object and class contracts (e.g., class/c
, object/c
, etc.) are currently all impersonator contracts. Though chaperone versions of those may be offered eventually. In contrast, it's not possible to make parameteric contracts into chaperone contracts.
Recursive contracts constructed with recursive-contract also default to impersonator contracts, but can be configured to be any type.