text: function _extends() {
      _extends = Object.assign || function(target) {
          for(var i = 1; i < arguments.length; i++){
              var source = arguments[i];
              for(var key in source){
                  if (Object.prototype.hasOwnProperty.call(source, key)) {
                      target[key] = source[key];
                  }
              }
          }
          return target;
      };
      return _extends.apply(this, arguments);
  }
  function _objectWithoutProperties(source, excluded) {
      if (source == null) return {
      };
      var target = _objectWithoutPropertiesLoose(source, excluded);
      var key, i;
      if (Object.getOwnPropertySymbols) {
          var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
          for(i = 0; i < sourceSymbolKeys.length; i++){
              key = sourceSymbolKeys[i];
              if (excluded.indexOf(key) >= 0) continue;
              if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
              target[key] = source[key];
          }
      }
      return target;
  }
  function _objectWithoutPropertiesLoose(source, excluded) {
      if (source == null) return {
      };
      var target = {
      };
      var sourceKeys = Object.keys(source);
      var key, i;
      for(i = 0; i < sourceKeys.length; i++){
          key = sourceKeys[i];
          if (excluded.indexOf(key) >= 0) continue;
          target[key] = source[key];
      }
      return target;
  }
  // Declaration forms for array destructuring
  // Destructuring from a simple array -> include undefined
  const [s1] = strArray;
  s1.toString(); // Should error, s1 possibly undefined
  // Destructuring a rest element -> do not include undefined
  const [...s2] = strArray;
  s2.push(undefined); // Should error, 'undefined' not part of s2's element type
  // Destructuring a rest element -> do not include undefined
  const [, , ...s3] = strArray;
  s3.push(undefined); // Should error, 'undefined' not part of s2's element type
  const { t1  } = strMap;
  t1.toString(); // Should error, t1 possibly undefined
  const t2 = _extends({
  }, strMap);
  t2.z.toString(); // Should error
  {
      const { x , y , z  } = numMapPoint;
      x.toFixed(); // Should OK
      y.toFixed(); // Should OK
      z.toFixed(); // Should error
  }{
      const { x  } = numMapPoint, q = _objectWithoutProperties(numMapPoint, ["x"]);
      x.toFixed(); // Should OK
      q.y.toFixed(); // Should OK
      q.z.toFixed(); // Should error
  }// Assignment forms
  [target_string] = strArray; // Should error
  [target_string_undef] = strArray; // Should OK
  [, , , ...target_string_arr] = strArray; // Should OK
  {
      let x, y, z;
      ({ x , y , z  } = numMapPoint); // Should OK
      let q;
      ({ q  } = numMapPoint); // Should error
  }
  