anchor.diff:  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) ;
  +BAR_EOL: '|' [ \t]* '\r'? '\n' ;
  +BAR: '|' ;
  +HBAR: '|' [|\-=\:\.\+ \t]* '|' [ \t]* '\r'? '\n' ;
   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) ;
  +ASSERT: 'Assert' ;
  +THAT: 'that' ;
  +STOP: '.' ;
  +AND: 'and' ;
  +IS: 'is' ;
  +NOT: 'not' ;
  +THROWS: 'throws' ;
  +FOR: 'for' ;
  +ALL: 'all' ;
  +COMMA: ',' ;
  +RULES: 'rules' ;
  +IN: 'in' ;
   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) ;
  +WHERE: 'where' ;
  +EQ: '=' ;
  +LET: 'Let' ;
  +BE: 'be' ;
  +DO: 'Do' ;
   A_STUB_OF: 'a' [ \t\r\n]+ 'stub' [ \t\r\n]+ 'of' -> mode(EXPECT_CLASS) ;
  -SUCH: 'such' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  +SUCH: 'such' ;
   METHOD: 'method' -> mode(AFTER_METHOD) ;
  -RETURNS: 'returns' -> mode(IN_THE_MIDDLE_OF_LINE) ;
  +RETURNS: 'returns' ;
   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) ;
  +ON: 'on' ;
  +WITH: 'with' ;
  +NULL: 'null' ;
  +NOTHING: 'nothing' ;
  +TRUE: 'true' ;
  +FALSE: 'false' ;
  +Identifier:	IdentStart IdentPart* ;
  +Integer: IntegerLiteral ;
  +FloatingPoint: FloatingPointLiteral ;
  +MINUS: '-' ;
  +EMPTY_STRING: '""' ;
   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);
   
  
positive.code: RBRACKET: ']' ;
  Identifier3 : IdentStart IdentPart* -> type(Identifier);
  SPACETABNEWLINE2: [ \t\r\n]+ -> skip ;
  CLOSEBACKTICK2: '`' -> skip, mode(IN_THE_MIDDLE_OF_LINE) ;
  
  mode EXPECT_CLASS;
  OPENBACKTICK4: '`' -> skip, mode(CLASS) ;
  
negative.code: 
  mode IN_TABLE_NAME;
  SingleQuoteName: ~[\]\r\n]* ;
  RBRACKET2: ']' -> skip, mode(DEFAULT_MODE) ;
  
  mode IN_FILE_NAME;
  SingleQuoteName2: (~['\r\n]|'\'\'')* -> type(SingleQuoteName) ;
  CLOSESINGLEQUOTE2: '\'' -> skip, mode(DEFAULT_MODE) ;
  
  mode IN_BOOK_NAME;
  SingleQuoteName3: (~['\r\n]|'\'\'')* -> type(SingleQuoteName) ;
  CLOSESINGLEQUOTE3: '\'' -> skip, mode(DEFAULT_MODE) ;
  
  mode ABBREVIATION;
  ShortName: ~[\]\r\n]* ;
  