Существует универсальный способ клонирования объекта - однако не глубокая копия:
public function clone():MyObject
{
var byteArr:ByteArray = new ByteArray();
byteArr.writeObject(this);
byteArr.position = 0;
return(byteArr.readObject());
}
В любом случае настоящая глубокая копия иногда не очень полезна, так как часто будет определенный уровень, на котором вы захотите остановиться. В общем, я рекомендую создать интерфейс ICloneable, который определяет метод клонирования. Реализуйте этот объект для всех объектов, которые вы хотите клонировать, и рекурсивно вызывайте его для всех экземпляров, которые реализуют этот интерфейс.