anchor.diff:  
   MacroEnd  : '>>' -> mode(DEFAULT_MODE) ;
   
  -mode CODE_INLINE;
  -
  -AnyInline : ~('\r'|'\n') -> more;
  -
  -OopsItsABlock : ('\r'|'\n') {seek(-1);} -> mode(CODE_BLOCK), more ;
  -
  -EndNoWikiInline : '}}}' ~'}' {nowiki}? {nowiki=false; seek(-1);} -> mode(DEFAULT_MODE) ;
  -EndCppInline   : '[</c++>]'   {cpp}?   {cpp=false;}   -> mode(DEFAULT_MODE) ;
  -EndHtmlInline  : '[</html>]'  {html}?  {html=false;}  -> mode(DEFAULT_MODE) ;
  -EndJavaInline  : '[</java>]'  {java}?  {java=false;}  -> mode(DEFAULT_MODE) ;
  -EndXhtmlInline : '[</xhtml>]' {xhtml}? {xhtml=false;} -> mode(DEFAULT_MODE) ;
  -EndXmlInline   : '[</xml>]'   {xml}?   {xml=false;}   -> mode(DEFAULT_MODE) ;
  -
  -mode CODE_BLOCK;
  -
  -AnyText   : . -> more ;
  -
  -EndNoWikiBlock : (~' ' '}}}' | ' }}}' '\r'? '\n' {seek(-1);}) {nowiki}? {nowiki=false;} -> mode(DEFAULT_MODE) ;
  -EndCppBlock    : ~' ' '[</cpp>]'   {cpp}?   {cpp=false;}   -> mode(DEFAULT_MODE) ;
  -EndHtmlBlock   : ~' ' '[</html>]'  {html}?  {html=false;}  -> mode(DEFAULT_MODE) ;
  -EndJavaBlock   : ~' ' '[</java>]'  {java}?  {java=false;}  -> mode(DEFAULT_MODE) ;
  -EndXhtmlBlock  : ~' ' '[</xhtml>]' {xhtml}? {xhtml=false;} -> mode(DEFAULT_MODE) ;
  -EndXmlBlock    : ~' ' '[</xml>]'   {xml}?   {xml=false;}   -> mode(DEFAULT_MODE) ;
  +// ***** NoWiki
  +
  +mode NOWIKI_INLINE;
  +
  +fragment INLINE  : ~('\r'|'\n') ;
  +fragment BLOCK   : . ;
  +fragment TOBLOCK : ('\r'|'\n') ;
  +
  +NoWikiInline    : INLINE -> more ;
  +NoWikiToBlock   : TOBLOCK -> mode(NOWIKI_BLOCK), more ;
  +EndNoWikiInline : '}}}' ~'}'  {seek(-1);} -> mode(DEFAULT_MODE) ;
  +
  +mode NOWIKI_BLOCK;
  +
  +NoWikiAny      : BLOCK -> more ;
  +EndNoWikiBlock : (~' ' '}}}' | ' }}}' '\r'? '\n' {seek(-1);}) -> mode(DEFAULT_MODE) ;
  +
  +// ***** C++
  +
  +mode CPP_INLINE;
  +
  +CppInline    : INLINE -> more ;
  +CppToBlock   : TOBLOCK -> mode(CPP_BLOCK), more ;
  +EndCppInline : '[</c++>]' -> mode(DEFAULT_MODE) ;
  +
  +mode CPP_BLOCK;
  +
  +CppAny      : BLOCK -> more ;
  +EndCppBlock : ~' ' '[</c++>]' -> mode(DEFAULT_MODE) ;
  +
  +// ***** HTML
  +
  +mode HTML_INLINE;
  +
  +HtmlInline    : INLINE -> more ;
  +HtmlToBlock   : TOBLOCK -> mode(HTML_BLOCK), more ;
  +EndHtmlInline : '[</html>]'-> mode(DEFAULT_MODE) ;
  +
  +mode HTML_BLOCK;
  +
  +HtmlAny      : BLOCK -> more ;
  +EndHtmlBlock : ~' ' '[</html>]' -> mode(DEFAULT_MODE) ;
  +
  +// ***** Java
  +
  +mode JAVA_INLINE;
  +
  +JavaInline    : INLINE -> more ;
  +JavaToBlock   : TOBLOCK -> mode(JAVA_BLOCK), more ;
  +EndJavaInline : '[</java>]'-> mode(DEFAULT_MODE) ;
  +
  +mode JAVA_BLOCK;
  +
  +JavaAny      : BLOCK -> more ;
  +EndJavaBlock : ~' ' '[</java>]' -> mode(DEFAULT_MODE) ;
  +
  +// ***** XHTML
  +
  +mode XHTML_INLINE;
  +
  +XhtmlInline    : INLINE -> more ;
  +XhtmlToBlock   : TOBLOCK -> mode(XHTML_BLOCK), more ;
  +EndXhtmlInline : '[</xhtml>]' -> mode(DEFAULT_MODE) ;
  +
  +mode XHTML_BLOCK;
  +
  +XhtmlAny      : BLOCK -> more ;
  +EndXhtmlBlock : ~' ' '[</xhtml>]' -> mode(DEFAULT_MODE) ;
  +
  +// ***** XML
  +
  +mode XML_INLINE;
  +
  +XmlInline    : INLINE -> more ;
  +XmlToBlock   : TOBLOCK -> mode(XML_BLOCK), more ;
  +EndXmlInline : '[</xml>]' -> mode(DEFAULT_MODE) ;
  +
  +mode XML_BLOCK;
  +
  +XmlAny      : BLOCK -> more ;
  +EndXmlBlock : ~' ' '[</xml>]' -> mode(DEFAULT_MODE) ;
  
positive.code:   public boolean inHeader = false;
    public boolean start = false;
    public int listLevel = 0;
    boolean nowiki = false;
    boolean cpp = false;
    boolean html = false;
    boolean java = false;
    boolean xhtml = false;
    boolean xml = false;
    boolean intr = false;
  
    public void doHdr() {
  
negative.code:     listLevel = 0;
      inHeader = false;
      intr = false;
    }
  
    public String[] thisKillsTheFormatting() {
  