docs: @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));
      }