presto-main/src/main/java/io/prestosql/metadata/SignatureBinder.java/SignatureBinder/SignatureBinder
class SignatureBinder:    SignatureBinder(Metadata metadata, Signature declaredSignature, boolean allowCoercion)
    {
        checkNoLiteralVariableUsageAcrossTypes(declaredSignature);
        this.metadata = requireNonNull(metadata, "metadata is null");
        this.typeCoercion = new TypeCoercion(metadata::getType);
        this.declaredSignature = requireNonNull(declaredSignature, "parametrizedSignature is null");
        this.allowCoercion = allowCoercion;
        this.typeVariableConstraints = declaredSignature.getTypeVariableConstraints().stream()
                .collect(toMap(TypeVariableConstraint::getName, identity()));
    }