anchor.diff:    }
   
     final String json;
  +  final int length;
     int position = 0;
     static List<int> tokens;
   }
  
positive.code:   }
  
    num _parseNumber() {
      if (!_isToken(NUMBER_LITERAL)) _error("Expected number literal");
  
      final int startPos = position;
      if (_isChar(MINUS)) position++;
      if (_isChar(CHAR_0)) {
        position++;
      } else if (_isDigit()) {
        position++;
        while (_isDigit()) position++;
      } else {
        _error("Expected digit when parsing number");
      }
  
      bool isInt = true;
      if (_isChar(DOT)) {
        position++;
        if (_isDigit()) {
          isInt = false;
          while (_isDigit()) position++;
        } else {
          position--;  // No digit, backtrack.
        }
      }
  
      if (_isChar(CHAR_E) || _isChar(CHAR_CAPITAL_E)) {
        int backtrackTo = position;
        position++;
        if (_isChar(MINUS) || _isChar(PLUS)) position++;
        if (_isDigit()) {
          position++;
          isInt = false;
          while (_isDigit()) position++;
        } else {
          position = backtrackTo;  // No digit, backtrack.
        }
      }
  
  
negative.code:       }
        if (c == BACKSLASH) {
          position++;
          if (position == length) {
            _error('\\ at the end of input');
          }
  
  