var layer = new Layer(kag, kag.fore.layers[0]);
このlayer変数を単にスクリプトで扱うだけなら、面倒も何もない。

さて、layerオブジェクトを保存/復元してみようとする。(描画内容とかは考えない)
位置やサイズ等の情報は問題ない。DictionaryでもXMLでも書き出してやるだけだ。
では親子関係はどうする?

1.完全な(デ)シリアライズのためには親や子のレイヤの情報も再帰的に書き出す必要がある。
しかしそれには問題がある。
・プライマリでない限り、レイヤは普通KAGの管理するレイヤの子になる。
・また、どこかで別のプラグインの生成したレイヤが兄弟になる場合もある。
 →これら、別に独自管理されているレイヤの情報を、シリアライザが加工するのは望ましくない。

2.では、親子のレイヤにはシリアライザは干渉しないものとする。
しかし、これでは復元の際に問題が出る。
Layerは常に「Windowオブジェクトに属し」「Layerオブジェクトの子(またはプライマリ)」でなければならない。
最初の例でいえば、kag、kag.fore.layers[0] といったオブジェクト。
これらのインスタンスを、復元時にシリアライザはどこから持ってくるのか。
そもそも、復元時にこれらのインスタンスそのものが存在するという保証すらない。

なんてことを考えると頭が痛すぎる。
なっ面倒だろう。