code: @Override
      public JsonNode visit(JmesPathFunction function, JsonNode input) throws InvalidTypeException {
          List<JsonNode> evaluatedArguments = new ArrayList<JsonNode>();
          List<JmesPathExpression> arguments = function.getExpressions();
          for (JmesPathExpression arg : arguments) {
              evaluatedArguments.add(arg.accept(this, input));
          }
          return function.evaluate(evaluatedArguments);
      }
docs: Evaluates function expression in applicative order. Each
  argument is an expression, each argument expression is
  evaluated before evaluating the function. The function is
  then called with the evaluated function arguments. The
  result of the function-expression is the result returned
  by the function call.
  
  @param function JmesPath function type
  @param input    Input json node against which evaluation is done
  @return Result of the function evaluation
  @throws InvalidTypeException