anchor.diff:  fragment NOT_LINE_TERMINATOR : ~('\r' | '\n');
   COMMENT : '%' | '%' ~'{' NOT_LINE_TERMINATOR*;
   
  -SHELL_COMMAND : '!' NOT_LINE_TERMINATOR*;
  -
  -LINE_TERMINATOR : '\r' '\n' | '\r' | '\n';
  +SHELL_COMMAND : '!' NOT_LINE_TERMINATOR* { couldBeFieldName = false; };
  +
  +LINE_TERMINATOR : '\r' '\n' | '\r' | '\n' { couldBeFieldName = false; };
   
   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 : .;
  +MISC : . { couldBeFieldName = false; };
  
positive.code:     //change column to 1-based
      return new matlab.ArrayTranslationProblem(e.line, e.charPositionInLine + 1, "LEXER: " + getErrorMessage(e, tokenNames));
  }
  }
  
  //start symbol
  
negative.code: t_TRY : TRY { offsetTracker.advanceInLine(3); };
  t_WHILE : WHILE { offsetTracker.advanceInLine(5); };
  
  //TODO-AC: technically there should also be a condition that we're in a class and the preceding non-filler wasn't DOT
  //class-specific keywords (IDENTIFIER + predicate)
  t_EVENTS : { ((CommonTokenStream) input).LT(1).getText().equals("events") }? IDENTIFIER { offsetTracker.advanceInLine(6); };
  t_METHODS : { ((CommonTokenStream) input).LT(1).getText().equals("methods") }? IDENTIFIER { offsetTracker.advanceInLine(7); };
  