docs: function parseCatchClause() {
          var param, params = [], paramMap = {}, key, i, body, node = new Node();
  
          expectKeyword('catch');
  
          expect('(');
          if (match(')')) {
              throwUnexpectedToken(lookahead);
          }
  
          param = parsePattern(params);
          for (i = 0; i < params.length; i++) {
              key = '$' + params[i].value;
              if (Object.prototype.hasOwnProperty.call(paramMap, key)) {
                  tolerateError(Messages.DuplicateBinding, params[i].value);
              }
              paramMap[key] = true;
          }
  
          // ECMA-262 12.14.1
          if (strict && isRestrictedWord(param.name)) {
              tolerateError(Messages.StrictCatchVariable);
          }
  
          expect(')');
          body = parseBlock();
          return node.finishCatchClause(param, body);
      }