anchor.diff:          [this.matchStr='', this.lastMatch]);
   
     /// Find next state.
  +  /// TODO: I need to favor 'matchables' over 'exactMatch' if any exist.
     State derive(ch){
       if(rules.isEmpty) {
  -      throw new NoMatch();
  +      throw new NoMatch(this);
       }
       if(lastMatch != null){
         return deriveLastMatch(ch);
  
positive.code: 
    void evaluate(){
      if(state.lastMatch != null) return;
      var matches = state.findExactMatches();
      if(matches.length > 1) throw "More that one match is not supported yet";
      if(matches.length == 1) {
  
negative.code: part 'src/language.dart';
  part 'src/rules.dart';
  part 'src/builder.dart';
  
  class Debug {
    List<State> stacktrace = <State>[];
    void addTrace(State state) => stacktrace.add(state);
    String toString(){
      String str = '';
      for(final state in stacktrace){
        str += '${state.rules}: "${state.matchStr}"\n';
      }
      return str;
    }
  }
  
  class Token {
    final String value;
  