code: private IdentifierToken eatIdOrKeywordAsId() {
      Token token = nextToken();
      if (token.type == TokenType.IDENTIFIER) {
        return (IdentifierToken) token;
      } else if (Keywords.isKeyword(token.type)) {
        return new IdentifierToken(
            token.location, Keywords.get(token.type).toString());
      } else {
        reportExpectedError(token, TokenType.IDENTIFIER);
      }
      return null;
    }
docs: Consumes an identifier token that may be a reserved word, i.e.
  an IdentifierName, not necessarily an Identifier.
  @see "http://www.ecma-international.org/ecma-262/5.1/#sec-7.6"