This API is still experimental, so it may change or be removed in future versions. You should not rely on it for production applications.
function(value) {
assertType(adt)(`${this[tagSymbol]}#equals`, value);
return sameType(this, value) && compositesEqual(this, value, Object.keys(this));
}