anchor.diff:  
     bool isNullable() => false;
     bool isEmpty() => false;
  -  Set parseNull() => new Set();
  -  Parser derive(token){
  +  Set _parseNull() => new Set();
  +  Parser _derive(token){
       RegExp exp = new RegExp(this.pattern);
       if (exp.hasMatch(token)){
         var s = new Set();
  
positive.code: 
    bool isNullable() => false;
    bool isEmpty() => false;
    Set parseNull() => new Set();
    Parser derive(token){
      print('Token derive $token');
      if (this.token == token){
        var s = new Set();
  
negative.code:   }
  }
  
  class Lazy extends Parser {
    Parser parser;
    var token;
    Parser derivative;
  
    Lazy(this.parser, this.token);
    Parser _derive(token){
      print('derive lazy $token');
      this._evaluate();
      return this.derivative.derive(token);
    }
  
    Set _parseNull(){
      print('derive lazy $token');
      this._evaluate();
      return this.derivative.parseNull();
    }
    
    void _evaluate(){
      if(this.derivative == null)
        this.derivative = this.parser._derive(this.token);
    }
  }
  
  class Empty extends Parser {
    bool isNullable() => false;
    bool isEmpty() => true;
    Set _parseNull() => new Set();
    Parser _derive(token) {
      print('derive empty');
      return new Empty();
    }
  
    /** singleton factory */
    static final _instance = new Empty._internal();
  