anchor.diff:      }
   
       oneLexLoop() {
  -      lastIndex = index;
  -      ch = text[index];
         if (isIn(QUOTES)) {
           throw "not implemented";
         } else if (isNumber() || isIn(DOT) && isNumber(peek())) {
  
positive.code:           throw "Unexpected next character $index $ch";
          }
        }
        if (index == lastIndex) {
          throw "Lex loop must advance: $index";
        }
      }
  
      while (index < textLength) {
        try {
          oneLexLoop();
        } catch (e, s) {
          throw "index: $index $e\nORIG STACK:\n" + s.toString();
        }
  
      }
      return tokens;
  
    }
  
  
  
  }
negative.code: 
      String peek() => index + 1 < textLength ? text[index + 1] : "EOF";
  
      breakWhile() { throw new BreakException(); }
      whileChars(fn(), [endFn()]) {
        while (index < textLength) {
          ch = text[index];
          int lastIndex = index;
  	      try {
            fn();
  	      } on BreakException catch(e) {
  	        endFn = null;
            break;
  	      }
          if (lastIndex == index) {
  	        throw "while chars loop must advance at index $index";
  	      }
        }
        if (endFn != null) { endFn(); }
      }
  
      readNumber() {
        String number = "";
        int start = index;
        whileChars(() {
          if (ch == '.' || isNumber()) {
            number += ch;
          } else {
  