anchor.diff:  fragment ELLIPSIS_COMMENT : '...' NOT_LINE_TERMINATOR* LINE_TERMINATOR;
   fragment OTHER_WHITESPACE : (' ' | '\t' | '\f')+;
   FILLER : ((('...')=> ELLIPSIS_COMMENT) | OTHER_WHITESPACE)+; //NB: putting the predicate on the fragment doesn't work
  +
  +MISC : .;
  
positive.code:   ;
  
  stmt_body :
       expr (t_FILLER? t_ASSIGN t_FILLER? expr)?
    |  (t_GLOBAL | t_PERSISTENT) (t_FILLER? name)+
    |  t_SHELL_COMMAND
    |  t_TRY sep_stmt_list (t_CATCH sep_stmt_list)? t_END
    |  t_SWITCH t_FILLER? expr t_FILLER? stmt_separator t_FILLER? (t_CASE t_FILLER? expr sep_stmt_list)* (t_OTHERWISE sep_stmt_list)? t_END
    |  t_IF t_FILLER? expr sep_stmt_list (t_ELSEIF t_FILLER? expr sep_stmt_list)* (t_ELSE sep_stmt_list)? t_END
    |  t_BREAK
    |  t_CONTINUE
    |  t_RETURN
    |  t_WHILE t_FILLER? expr sep_stmt_list t_END
    |  t_FOR t_FILLER? (name t_FILLER? ASSIGN t_FILLER? expr | LPAREN t_FILLER? name t_FILLER? ASSIGN t_FILLER? expr t_FILLER? RPAREN) sep_stmt_list t_END
    ;
  
  sep_stmt_list :
  
negative.code:   ;
  
  stmt :
       stmt_body? {input.LA(1) != EOF}? stmt_separator
    ;
  
  stmt_separator :
  