anchor.diff:    Language derive (String c) {
   
       // TODO(Sam): It looks like we need this only for Star.. Is this true?
  -    if(left is Star){
  +    if(left.canAccept){
         return new Or(new And(left.derive(c), right), right.derive(c));
       }
       return new And(left.derive(c), right);
  
positive.code: 
  /// A [Language] that matches the defined [Language].
  class Match extends Language {
    Language derive(dynamic ch) => empty;
    toString() => '\'\'';
  }
  
negative.code: /// A [Language] that matches the kleene star of a [Language].
  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;
  