anchor.diff:      }
       ;
   
  -ASSERT_CONDITION
  -{
  -  String c = null;
  -  String m = null;
  -}
  -    :	"@assert" (SPACE)* cond:CONDITION { c = cond.getText(); } (COMMA (SPACE)* mesg:MESSAGE { m = mesg.getText(); } SEMI)?
  -    {
  -      if(c != null) {
  -        c = c.replace('\n', ' ');
  -	c = c.replace('\r', ' ');
  -      }
  -      AssertToken assertTok = new AssertToken(c, m, _ttype, $getText);
  -      $setToken(assertTok);
  -    }
  -    ;
  -
   INVARIANT_CONDITION
   {
     String c = null;
     String m = null;
   }
  -    :	"@invariant" (SPACE)* cond:CONDITION { c = cond.getText(); } (COMMA (SPACE)* mesg:MESSAGE { m = mesg.getText(); } SEMI)?
  +    :	"@invariant" (SPACE)* cond:CONDITION { c = cond.getText(); } (COMMA (SPACE)* mesg:STRING_LITERAL { m = mesg.getText(); } SEMI)?
       {
         if(c != null) {
           c = c.replace('\n', ' ');
  
positive.code:     | '\n' { newline(); }
      | '\r' { newline(); }
      | ~('('|')'|'\n'|'\r')
      )*
      ')'
      //    : '(' ( ~('('|')') )* ')'
      //    | '(' CONDITION ')'
      //    : '(' ( ~('('|')') )* (CONDITION)? ( ~('('|')') )* ')'
      //	{ System.out.println("Assert: got CONDITION #" + text + "#"); }
    ;
  
  protected
  
negative.code:   String c = null;
    String m = null;
  }
    :	"@pre" (SPACE)* cond:CONDITION { c = cond.getText(); } (COMMA (SPACE)* mesg:STRING_LITERAL { m = mesg.getText(); } SEMI)?
      {
        if(c != null) {
          c = c.replace('\n', ' ');
  		c = c.replace('\r', ' ');
  		final AssertToken assertTok = new AssertToken(c, m, _ttype, $getText);
  		$setToken(assertTok);
        } else {
  		$setType(Token.SKIP);
  	  }
      }
    ;
  
  ASSERT_CONDITION
  {
    String c = null;
    String m = null;
  }
      :	"@assert" (SPACE)* cond:CONDITION { c = cond.getText(); } (COMMA (SPACE)* mesg:STRING_LITERAL { m = mesg.getText(); } SEMI)?
      {
        if(c != null) {
          c = c.replace('\n', ' ');
  