Object.Property
type key('M, 'T) =
| StringLiteral(('M, StringLiteral.t('M)))
| NumberLiteral(('M, NumberLiteral.t('M)))
| BigIntLiteral(('M, BigIntLiteral.t('M)))
| Identifier(Identifier.t('M, 'T))
| Computed(ComputedKey.t('M, 'T))
;
and t('M, 'T) = ('M, t'('M, 'T));
and t'('M, 'T) = {
key: key('M, 'T),
pattern: Pattern.t('M, 'T),
default: option(Expression.t('M, 'T)),
shorthand: bool,
};