presto-main/src/main/java/io/prestosql/metadata/SignatureBinder.java/SignatureBinder/satisfiesCoercion
class SignatureBinder:    private boolean satisfiesCoercion(RelationshipType relationshipType, Type actualType, TypeSignature constraintTypeSignature)
    {
        switch (relationshipType) {
            case EXACT:
                return actualType.getTypeSignature().equals(constraintTypeSignature);
            case IMPLICIT_COERCION:
                return typeCoercion.canCoerce(actualType, metadata.getType(constraintTypeSignature));
            case EXPLICIT_COERCION_TO:
                return canCast(actualType, metadata.getType(constraintTypeSignature));
            case EXPLICIT_COERCION_FROM:
                return canCast(metadata.getType(constraintTypeSignature), actualType);
            default:
                throw new IllegalArgumentException("Unsupported relationshipType " + relationshipType);
        }
    }