ダメだった場合は何がダメだったのかの状況が分からんのでエスパーするしかないよね

>辞書配列の中に配列を入れていたりで記述が長く
とのことなのでassignじゃなくてassignStructを使えば解決、などとエスパーしてみる。
assignだと参照コピーなので元のactionやらeventやらの子配列や辞書を書き換えると
assign先の内容も合わせて変わってしまう罠がある:
var a = [], b = [ %[ hoge:0 ] ];
a.assign(b);
b[0].hoge = 1;
Debug.message(a[0].hoge); // ->1
みたいな。assignStructだとディープコピーなので完全に別物になる

あとはまあ保存可能ラベル(*〜|)を通過してない系の罠かなあ
配列や辞書以外のオブジェクト(クラスインスタンスとか)は
そもそもファイルにセーブできないってのもあるけど、そんなオチはないよね…