function visitStructuredVariable(traverse, node, path, state) {
  // Allocate new temp for the pattern.
  utils.append(utils.getTempVar(state.localScope.tempVarIndex) + '=', state);
  // Skip the pattern and assign the init to the temp.
  utils.catchupWhiteSpace(node.init.range[0], state);
  traverse(node.init, path, state);
  utils.catchup(node.init.range[1], state);
  // Render the destructured data.
  utils.append(',' + getDestructuredComponents(node.id, state), state);
  state.localScope.tempVarIndex++;
  return false;
}
Implements ES6 destructuring assignment and pattern matchng.

function init({port, ip, coords: [x, y]}) {
  return (x && y) ? {id, port} : {ip};
};

function init($__0) {
  var
   port = $__0.port,
   ip = $__0.ip,
   $__1 = $__0.coords,
   x = $__1[0],
   y = $__1[1];
  return (x && y) ? {id, port} : {ip};
}

var x, {ip, port} = init({ip, port});

var x, $__0 = init({ip, port}), ip = $__0.ip, port = $__0.port;