correctly behave if inputs are already coerced + add support for foreign keys validation with ES6 Set