anchor.diff:  t_FILLER : FILLER { offsetTracker.advanceByTextSize($text); };
   
   t_LINE_TERMINATOR : LINE_TERMINATOR { offsetTracker.advanceToNewLine(1, 1); };
  +
  +dt_COMMA : COMMA { offsetTracker.recordOffsetChange(0, 1); };
  +dt_SEMICOLON : SEMICOLON { offsetTracker.recordOffsetChange(0, 1); };
  +dt_LINE_TERMINATOR : LINE_TERMINATOR { offsetTracker.recordOffsetChange(1, -1 * $LINE_TERMINATOR.pos); }; //NB: end pos of newline is 0-based
   
   //// LEXER /////////////////////////////////////////////////////////////////////
   
  
positive.code:   ;
  
  quiet_element_separator_comma :
       t_COMMA {System.err.println("deleting comma " + retval.start);}-> template() "" //delete comma
    ;
  
  input_params :
  
negative.code:   ;
  
  quiet_row_separator : //match and delete row_separator
       dt_LINE_TERMINATOR {System.err.println("deleting newline before " + input.LT(1));}-> template() ""
    |  dt_SEMICOLON {System.err.println("deleting semicolon before " + input.LT(1));}-> template() ""
    |  t_COMMENT t_LINE_TERMINATOR //can't delete in this case
    |  t_BRACKET_COMMENT t_LINE_TERMINATOR //can't delete in this case
    ;
  