anchor.diff:          _currentDelimiters = token.value;
         }
         
  -      var followingWhitespace =
  -        _peek() != null && _peek().type == TokenType.whitespace ? _read() : null;
  +      var followingWhitespace = _readIf(TokenType.whitespace, eofOk: true);
   
         // Need to emit leading whitespace if the last line was not a standalone
         // line. The consecutive flag keeps track of this.
  
positive.code:     
        assert(_peek().type == TokenType.lineEnd || _i == 0);
    
        //TODO _readIf(TokenType) helper.
        var precedingLineEnd = _peek() != null && _peek().type == TokenType.lineEnd
            ? _read() : null;
        
        // The scanner guarantees that there will only be a single whitespace token,
        // there are never consecutive whitespace tokens.
        var precedingWhitespace =
          _peek() != null && _peek().type == TokenType.whitespace ? _read() : null;
            
        Tag tag;
        Node tagNode;
  
negative.code:     return list;
    }
    
    void _checkEof() {
      if (_peek() == null) throw 'End of file!'; //TODO error message;
    }
    
  