var key, x, y, z; // impure

key = 1;

var _$a = {
  1: 1,
  a: 1
},
    _key = key++,
    {
  [_key]: y
} = _$a,
    x = babelHelpers.objectWithoutProperties(_$a, [_key].map(babelHelpers.toPropertyKey));

expect(x).toEqual({
  a: 1
});
expect(key).toBe(2);
expect(y).toBe(1); // takes care of the order

key = 1;

var _$ = {
  2: 2,
  3: 3
},
    _key2 = ++key,
    _key3 = ++key,
    {
  [_key2]: y,
  [_key3]: z
} = _$,
    rest = babelHelpers.objectWithoutProperties(_$, [_key2, _key3].map(babelHelpers.toPropertyKey));

expect(y).toBe(2);
expect(z).toBe(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;
expect(y).toBe("two");
expect(x).toEqual({});
expect(z).toBe("zee");
