code: function() {
        switch (this.value) {
          case '{':
            return this.parseBlockStatement();
          case 'var':
          case 'let':
          case 'const':
            return this.parseVariableStatement(this.value);
          case ';':
            return this.parseEmptyStatement();
          case 'if':
            return this.parseIfStatement();
          case 'continue':
            return this.parseContinueStatement();
          case 'break':
            return this.parseBreakStatement();
          case 'return':
            return this.parseReturnStatement();
          case 'with':
            return this.parseWithStatement();
          case 'throw':
            return this.parseThrowStatement();
          case 'try':
            return this.parseTryStatement();
          case 'debugger':
            return this.parseDebuggerStatement();
          case 'function':
            return this.parseFunctionDeclaration();
          case 'class':
            return this.parseClassDeclaration();
          case 'switch':
            return this.parseSwitchStatement();
          case 'do':
            return this.parseDoWhileStatement();
          case 'while':
            return this.parseWhileStatement();
          case 'for':
            return this.parseForStatement();
          case 'import':
            return this.parseImportDeclaration();
          case 'export':
            return this.parseExportDeclaration();
          default:
            return this.parseMaybeExpressionStatement();
        }
      }
docs: ECMA-262 13 ECMAScript Language: Statements and Declarations