transformBinaryExpression(tree) {
    this.pushTempScope();

    let rv;
    if (tree.operator.type === EQUAL && tree.left.isPattern()) {
      rv = this.transformAny(this.desugarAssignment_(tree.left, tree.right));
    } else {
      rv = super.transformBinaryExpression(tree);
    }

    this.popTempScope();
    return rv;
  }
Transforms:
  [a, ...b]] = x
From an assignment expression into:

 ($__0 = x,
  a = ($__1 = $__0[Symbol.iterator](),
      ($__2 = $__1.next()).done ? void 0 : $__2.value),
  b = $traceurRuntime.iteratorToArray($__1),
  $__0);

Nested patterns are desugared by recursive calls to transform.

@param {BinaryExpression} tree
@return {ParseTree}