message: Really fix by storing seen nodes before calling this.copy.
diff: @@ -103,15 +103,13 @@ TCp.copy = function (node) {
  return this.seen.get(node);
  }
  - var copy = this._justCopy(node);
  + if (isArray.check(node)) {
  + var copy = new Array(node.length);
  this.seen.set(node, copy);
  -
  + node.forEach(function (item, i) {
  + copy[i] = this.copy(item);
  + }, this);
  return copy;
  -};
  -
  -TCp._justCopy = function(node) {
  - if (isArray.check(node)) {
  - return node.map(this.copy, this);
  }
  if (!isObject.check(node)) {
  @@ -129,6 +127,8 @@ TCp._justCopy = function(node) {
  }
  });
  + this.seen.set(node, copy);
  +
  var loc = node.loc;
  var oldIndent = this.indent;
  var newIndent = oldIndent;
  