anchor.diff:  RBRACKET: ']' ;
   Identifier3 : IdentStart IdentPart* -> type(Identifier);
   SPACETABNEWLINE2: [ \t\r\n]+ -> skip ;
  -CLOSEBACKTICK2: '`' -> skip, mode(IN_THE_MIDDLE_OF_LINE) ;
  +CLOSEBACKTICK2: '`' -> skip, mode(DEFAULT_MODE) ;
   
   mode EXPECT_CLASS;
   OPENBACKTICK4: '`' -> skip, mode(CLASS) ;
  
positive.code: EXERCISE: 'Exercise' -> mode(PHASE_LEADING);
  VERIFY:   'Verify'  -> mode(PHASE_LEADING);
  TEARDOWN: 'Teardown' -> mode(PHASE_LEADING);
  BAR_EOL: '|' [ \t]* '\r'? '\n' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  BAR: '|' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  HBAR: '|' [|\-=\:\.\+ \t]* '|' [ \t]* '\r'? '\n' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  STARLBRACKET: '*[' -> skip, mode(ABBREVIATION);
  ASSERT: 'Assert' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  THAT: 'that' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  STOP: '.' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  AND: 'and' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  IS: 'is' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  NOT: 'not' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  THROWS: 'throws' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  FOR: 'for' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  ALL: 'all' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  COMMA: ',' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  RULES: 'rules' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  IN: 'in' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  UTABLE: 'Table' -> mode(AFTER_TABLE) ;
  CSV: 'CSV' -> mode(AFTER_CSV) ;
  TSV: 'TSV' -> mode(AFTER_CSV) ;
  EXCEL: 'Excel' -> mode(AFTER_EXCEL) ;
  WHERE: 'where' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  EQ: '=' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  LET: 'Let' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  BE: 'be' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  DO: 'Do' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  A_STUB_OF: 'a' [ \t\r\n]+ 'stub' [ \t\r\n]+ 'of' -> mode(EXPECT_CLASS) ;
  SUCH: 'such' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  METHOD: 'method' -> mode(AFTER_METHOD) ;
  RETURNS: 'returns' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  AN_INSTANCE_OF: 'an' [ \t\r\n]+ 'instance' [ \t\r\n]+ 'of' -> mode(EXPECT_CLASS) ;
  AN_INSTANCE: 'an' [ \t\r\n]+ 'instance' -> mode(AFTER_AN_INSTANCE) ;
  AN_INVOCATION_OF: 'an' [ \t\r\n]+ 'invocation' [ \t\r\n]+ 'of' -> mode(AFTER_METHOD) ;
  ON: 'on' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  WITH: 'with' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  NULL: 'null' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  NOTHING: 'nothing' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  TRUE: 'true' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  FALSE: 'false' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  Identifier:	IdentStart IdentPart* -> mode(IN_THE_MIDDLE_OF_LINE) ;
  Integer: IntegerLiteral -> mode(IN_THE_MIDDLE_OF_LINE) ;
  FloatingPoint: FloatingPointLiteral -> mode(IN_THE_MIDDLE_OF_LINE) ;
  MINUS: '-' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  EMPTY_STRING: '""' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  OPENBACKTICK: '`' -> skip, mode(IN_BACKTICK) ;
  OPENDOUBLEQUOTE: '"' -> skip, mode(IN_DOUBLEQUOTE) ;
  OPENSINGLEQUOTE: '\'' -> skip, mode(IN_SINGLEQUOTE) ;
  NEW_LINE : ('\r'? '\n')+ -> skip ;
  WS : [ \t]+ -> skip ;
  
  mode IN_THE_MIDDLE_OF_LINE;
  BAR_EOL2: '|' [ \t]* '\r'? '\n' -> type(BAR_EOL), mode(DEFAULT_MODE) ;
  BAR2: '|' -> type(BAR) ;
  HBAR2: '|' [|\-=\:\.\+ \t]* '|' [ \t]* '\r'? '\n' -> type(HBAR) ;
  ASSERT2: 'Assert' -> type(ASSERT) ;
  THAT2: 'that' -> type(THAT) ;
  STOP2: '.' -> type(STOP) ;
  AND2: 'and' -> type(AND) ;
  IS2: 'is' -> type(IS) ;
  NOT2: 'not' -> type(NOT) ;
  THROWS2: 'throws' -> type(THROWS) ;
  FOR2: 'for' -> type(FOR) ;
  ALL2: 'all' -> type(ALL) ;
  RULES2: 'rules' -> type(RULES) ;
  COMMA2: ',' -> type(COMMA);
  IN2: 'in' -> type(IN) ;
  UTABLE2: 'Table' -> type(UTABLE), mode(AFTER_TABLE) ;
  CSV2: 'CSV' -> type(CSV), mode(AFTER_CSV) ;
  TSV2: 'TSV' -> type(TSV), mode(AFTER_CSV) ;
  EXCEL2: 'Excel' -> type(EXCEL), mode(AFTER_EXCEL) ;
  WHERE2: 'where' -> type(WHERE) ;
  EQ2: '=' -> type(EQ) ;
  LET2: 'Let' -> type(LET) ;
  BE2: 'be' -> type(BE) ;
  DO2: 'Do' -> type(DO) ;
  A_STUB_OF2: 'a' [ \t\r\n]+ 'stub' [ \t\r\n]+ 'of' -> type(A_STUB_OF), mode(EXPECT_CLASS) ;
  SUCH2: 'such' -> type(SUCH) ;
  METHOD2: 'method' -> type(METHOD), mode(AFTER_METHOD) ;
  RETURNS2: 'returns' -> type(RETURNS) ;
  AN_INSTANCE_OF2: 'an' [ \t\r\n]+ 'instance' [ \t\r\n]+ 'of' -> type(AN_INSTANCE_OF), mode(EXPECT_CLASS) ;
  AN_INSTANCE2: 'an' [ \t\r\n]+ 'instance' -> type(AN_INSTANCE), mode(AFTER_AN_INSTANCE) ;
  AN_INVOCATION_OF2: 'an' [ \t\r\n]+ 'invocation' [ \t\r\n]+ 'of' -> type(AN_INVOCATION_OF), mode(AFTER_METHOD) ;
  ON2: 'on' -> type(ON) ;
  WITH2: 'with' -> type(WITH) ;
  NULL2: 'null' -> type(NULL) ;
  NOTHING2: 'nothing' -> type(NOTHING) ;
  TRUE2: 'true' -> type(TRUE) ;
  FALSE2: 'false' -> type(FALSE) ;
  Identifier2 : IdentStart IdentPart* -> type(Identifier);
  Integer2: IntegerLiteral -> type(Integer);
  FloatingPoint2: FloatingPointLiteral -> type(FloatingPoint);
  MINUS2: '-' -> type(MINUS) ;
  EMPTY_STRING2: '""' -> type(EMPTY_STRING) ;
  OPENBACKTICK2: '`' -> skip, mode(IN_BACKTICK) ;
  OPENDOUBLEQUOTE2: '"' -> skip, mode(IN_DOUBLEQUOTE) ;
  OPENSINGLEQUOTE2: '\'' -> skip, mode(IN_SINGLEQUOTE) ;
  NEW_LINE2 : ('\r'? '\n')+ -> skip, mode(DEFAULT_MODE) ;
  WS2 : [ \t]+ -> skip ;
  
  mode TEST_LEADING;
  WS3: [ \t]+ -> skip, mode(TEST_NAME);
  
  
negative.code: 
  mode IN_DOUBLEQUOTE;
  Str: (~["\\\r\n] | UnicodeEscape | EscapeSequence)+ ;
  CLOSEDOUBLEQUOTE: '"' -> skip, mode(DEFAULT_MODE) ;
  
  mode IN_SINGLEQUOTE;
  Char: (~['\\\r\n] | UnicodeEscape | EscapeSequence)+ ;
  CLOSESINGLEQUOTE: '\'' -> skip, mode(DEFAULT_MODE) ;
  
  mode IN_BACKTICK;
  Expr: ~[`]+ /*-> type(Expr)*/ ;
  CLOSEBACKTICK: '`' -> skip, mode(DEFAULT_MODE) ;
  
  mode AFTER_METHOD;
  OPENBACKTICK3: '`' -> skip, mode(METHOD_PATTERN) ;
  