public void addCallableFunction(
      String functionName, Method callableFunction, String... orderedParameterNames) {
    if (callableFunctions.containsKey(functionName)) {
      throw new IllegalArgumentException("Duplicate function name: " + functionName);
    } else {
      callableFunctions.put(
          functionName, new CallableFunction(callableFunction, orderedParameterNames));
    }
  }
Adds a callable function to the AutomaticFunctionCallingResponder.

<p><b>Note:</b>: If you don't want to manually provide parameter names, you can ignore
`orderedParameterNames` and compile your code with the "-parameters" flag. In this case, the
parameter names can be auto retrieved from reflection.

@param functionName the name of the function
@param callableFunction the method to call when the functionName is requested
@param orderedParameterNames the names of the parameters in the order they are passed to the
    function
@throws IllegalArgumentException if the functionName is already in the responder
@throws IllegalStateException if the parameter names are not provided and cannot be retrieved
    from reflection
java-vertexai/google-cloud-vertexai/src/main/java/com/google/cloud/vertexai/generativeai/AutomaticFunctionCallingResponder.java