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