docs: public final EventFilterParser.null_predicate_return null_predicate() throws RecognitionException {
          EventFilterParser.null_predicate_return retval = new EventFilterParser.null_predicate_return();
          retval.start = input.LT(1);
  
  
          CommonTree root_0 = null;
  
          Token IS72=null;
          Token NULL73=null;
          EventFilterParser.path_function_return path_function71 =null;
  
  
          CommonTree IS72_tree=null;
          CommonTree NULL73_tree=null;
          RewriteRuleTokenStream stream_IS=new RewriteRuleTokenStream(adaptor,"token IS");
          RewriteRuleTokenStream stream_NULL=new RewriteRuleTokenStream(adaptor,"token NULL");
          RewriteRuleSubtreeStream stream_path_function=new RewriteRuleSubtreeStream(adaptor,"rule path_function");
          try {
              // EventFilter.g:152:2: ( path_function IS NULL -> ^( NULL path_function ) )
              // EventFilter.g:152:4: path_function IS NULL
              {
              pushFollow(FOLLOW_path_function_in_null_predicate881);
              path_function71=path_function();
  
              state._fsp--;
  
              stream_path_function.add(path_function71.getTree());
  
              IS72=(Token)match(input,IS,FOLLOW_IS_in_null_predicate883);
              stream_IS.add(IS72);
  
  
              NULL73=(Token)match(input,NULL,FOLLOW_NULL_in_null_predicate885);
              stream_NULL.add(NULL73);
  
  
              // AST REWRITE
              // elements: path_function, NULL
              // token labels:
              // rule labels: retval
              // token list labels:
              // rule list labels:
              // wildcard labels:
              retval.tree = root_0;
              RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
  
              root_0 = (CommonTree)adaptor.nil();
              // 152:26: -> ^( NULL path_function )
              {
                  // EventFilter.g:152:29: ^( NULL path_function )
                  {
                  CommonTree root_1 = (CommonTree)adaptor.nil();
                  root_1 = (CommonTree)adaptor.becomeRoot(
                  new NullTreeNode(stream_NULL.nextToken())
                  , root_1);
  
                  adaptor.addChild(root_1, stream_path_function.nextTree());
  
                  adaptor.addChild(root_0, root_1);
                  }
  
              }
  
  
              retval.tree = root_0;
  
              }
  
              retval.stop = input.LT(-1);
  
  
              retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
              adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
  
          }
          catch (RecognitionException re) {
              reportError(re);
              recover(input,re);
      	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
  
          }
  
          finally {
          	// do for sure before leaving
          }
          return retval;
      }