anchor.diff:  
   }
   
  -SeaWhitespace:[ \t\r\n]+ -> channel(HIDDEN);
  +SeaWhitespace:[ \t\r\n]+ -> skip;
   HtmlText: ~[<#]+;
   PHPStartEcho:
   	PhpStartEchoFragment -> type(Echo), pushMode(PHP);
  -PHPStart:
  -	PhpStartFragment -> channel(SkipChannel), pushMode(PHP);
  +PHPStart: PhpStartFragment -> skip, pushMode(PHP);
   HtmlScriptOpen:
   	'<' 'script' { this._scriptTag = true } -> pushMode(INSIDE);
   HtmlStyleOpen:
   	'<' 'style' { this._styleTag = true } -> pushMode(INSIDE);
  -HtmlComment: '<' '!' '--' .*? '-->' -> channel(HIDDEN);
  +HtmlComment: '<' '!' '--' .*? '-->' -> skip;
   HtmlDtd: '<' '!' .*? '>';
   HtmlOpen: '<' -> pushMode(INSIDE);
   Shebang:
  
positive.code: PHPEndSingleLineComment: '?' '>';
  CommentQuestionMark:
  	'?' -> type(Comment), channel(PhpComments);
  CommentEnd:
  	[\r\n] -> channel(SkipChannel), popMode; // exit from comment.
  
  mode HereDoc; // TODO: interpolation for heredoc strings.
  
  
negative.code: ScriptClose: '<' '/' 'script'? '>' -> popMode;
  PHPStartInsideScriptEcho:
  	PhpStartEchoFragment -> type(Echo), pushMode(PHP);
  PHPStartInsideScript: PhpStartFragment -> skip, pushMode(PHP);
  ScriptText2: '<' ~[<?/]* -> type(ScriptText);
  ScriptText3: '?' ~[<]* -> type(ScriptText);
  ScriptText4: '/' ~[<]* -> type(ScriptText);
  