anchor.diff:  part of lexer;
   
  -Language empty = new Empty();
  +Language reject = new Reject();
   Language match = new Match();
   
   /// End of input special object.
   var EOI = new EndOfInput();
   
   abstract class Language {
  -  bool get isMatch => false;
  -  bool get canAccept => false;
  -  bool get isReject => false;
  +  bool get isMatchable => false;
     Language derive(dynamic ch);
  -  Language derveEnd(dynamic ch) => empty;
   }
   
   
   /// A [Language] that rejects everything.
  -class Empty extends Language {
  -  bool get isReject => true;
  -  Language derive(dynamic ch) => empty;
  +class Reject extends Language {
  +  Language derive(dynamic ch) => reject;
     toString() => '{}';
   }
   
   
   /// A [Language] that matches the defined [Language].
   class Match extends Language {
  -  bool get isMatch => true;
  -  bool get canAccept => true;
  -  Language derive(dynamic ch) => empty;
  +  bool get isMatchable => true;
  +  Language derive(dynamic ch) => reject;
     toString() => '\'\'';
   }
   
  
positive.code: class Star extends Language {
    final Language language;
  
    bool get isMatch => language.match;
    bool get canAccept => true;
  
    Star._internal(this.language);
    factory Star(language){
      if(language == match) return match;
      if(language == empty) return empty;
      return new Star._internal(language);
    }
    Language derive(ch) => new And(language.derive(ch), new Star(language));
  
negative.code: /// This [Language] is used as the last derivative to test wheather it is a
  /// match.
  class EndOfInput extends Language {
    Language derive(dynamic ch) => reject;//(ch == EOI)? match: reject;
    toString() => '<EOI>';
  }
  
  
  