text: var key, x, y, z; // impure
  
  key = 1;
  
  var _$a = {
    1: 1,
    a: 1
  },
      _ref = key++,
      {
    [_ref]: y
  } = _$a,
      x = babelHelpers.objectWithoutProperties(_$a, [_ref].map(babelHelpers.toPropertyKey));
  
  assert.deepEqual({
    a: 1
  }, x);
  assert.equal(key, 2);
  assert.equal(1, y); // takes care of the order
  
  key = 1;
  
  var _$ = {
    2: 2,
    3: 3
  },
      _ref2 = ++key,
      _ref3 = ++key,
      {
    [_ref2]: y,
    [_ref3]: z
  } = _$,
      rest = babelHelpers.objectWithoutProperties(_$, [_ref2, _ref3].map(babelHelpers.toPropertyKey));
  
  assert.equal(y, 2);
  assert.equal(z, 3); // pure, computed property should remain as-is
  
  key = 2;
  var _$z = {
    2: "two",
    z: "zee"
  };
  ({
    [key]: y,
    z
  } = _$z);
  x = babelHelpers.objectWithoutProperties(_$z, [key, "z"].map(babelHelpers.toPropertyKey));
  _$z;
  assert.equal(y, "two");
  assert.deepEqual(x, {});
  assert.equal(z, "zee");
  