ASのオブジェクトコピーの話

ActionScriptで a = b とした場合はシャローコピーとなり、bがaを参照する形になる。
参照ではなく完全にコピー(ディープコピー)したい場合は、

import flash.utils.ByteArray;

function clone(source:Object):* {
     var myBA:ByteArray = new ByteArray();
     myBA.writeObject(source);
     myBA.position = 0;
     return(myBA.readObject());
}

のような形で行う必要がある。
参考 : ActionScript3における deep copy - 川o・-・)<2nd life

public var grp: Graph;

private function xxx(): void {
     nwGraph.dataProvider = x;
     this.grp = x.dataProvider as Graph;
}

とかしていたらnwGraph.dataProviderのノード削除時にgrpのノードも削除されてしまう(そりゃそうだ)。仕方ないので上記方法でディープコピーしようとしたけどうまくいかない。
あれこれ悩んだけど、結局

public var grp: Graph;

private function xxx(): void {
     nwGraph.dataProvider = x;

     var r: Roamer = new Roamer();
     r.dataProvider = x;
     this.grp = r.dataProvider as Graph;
}

でうまくいった。なんてこったい。