docs: function parseBreakStatement(node) {
          var label = null, key;
  
          expectKeyword('break');
  
          // Catch the very common case first: immediately a semicolon (U+003B).
          if (source.charCodeAt(lastIndex) === 0x3B) {
              lex();
  
              if (!(state.inIteration || state.inSwitch)) {
                  throwError(Messages.IllegalBreak);
              }
  
              return node.finishBreakStatement(null);
          }
  
          if (hasLineTerminator) {
              if (!(state.inIteration || state.inSwitch)) {
                  throwError(Messages.IllegalBreak);
              }
  
              return node.finishBreakStatement(null);
          }
  
          if (lookahead.type === Token.Identifier) {
              label = parseVariableIdentifier();
  
              key = '$' + label.name;
              if (!Object.prototype.hasOwnProperty.call(state.labelSet, key)) {
                  throwError(Messages.UnknownLabel, label.name);
              }
          }
  
          consumeSemicolon();
  
          if (label === null && !(state.inIteration || state.inSwitch)) {
              throwError(Messages.IllegalBreak);
          }
  
          return node.finishBreakStatement(label);
      }