code: @Override
      public <Input, Output> Output accept(JmesPathVisitor<Input, Output> visitor, Input input) throws InvalidTypeException {
          return visitor.visit(this, input);
      }
docs: Delegates to either the CodeGen visitor(JmesPathFilter) or
  Evaluation visitor(JmesPathFilter) based on the type of JmesPath
  visitor
  
  @param visitor  CodeGen visitor or Evaluation visitor
  @param input    Input expression that needs to be evaluated
  @param <Input>  Input type for the visitor
  CodeGen visitor: Void
  Evaluation visitor: JsonNode
  @param <Output> Output type for the visitor
  CodeGen visitor: String
  Evaluation visitor: JsonNode
  @return Corresponding output is returned. Evaluated String
  in the case of CodeGen visitor or an evaluated JsonNode
  in the case of Evaluation visitor
  @throws InvalidTypeException