@ VisibleForTesting public static ParametricAggregation parseFunctionDefinitionWithTypesConstraint ( Class < ? > clazz , TypeSignature returnType , List < TypeSignature > argumentTypes ) { requireNonNull ( returnType , "returnType is null" ) ; requireNonNull ( argumentTypes , "argumentTypes is null" ) ; for ( ParametricAggregation aggregation : parseFunctionDefinitions ( clazz ) ) { if ( aggregation . getSignature ( ) . getReturnType ( ) . equals ( returnType ) && aggregation . getSignature ( ) . getArgumentTypes ( ) . equals ( argumentTypes ) ) { return aggregation ; } } throw new IllegalArgumentException ( String . format ( "No method with return type %s and arguments %s" , returnType , argumentTypes ) ) ; }
General purpose function matching is done through FunctionRegistry .