I tend to think of the Flex arrays and collections with a Java mindset, which is bad, as they don't follow the same patterns. Consequently I have a bad habit of either coercing an ArrayCollection to an Array implicitly, or explicitly and being mystified when they aren't a clean cast. They are different of course: Array and ArrayCollection documentation from the AS3 docs. The Array is used compositionally in the ArrayCollection and is a wrapper around the Array that implements the List and Collection functionality. The Array can be pulled from the collection via:

import mx.collections.ArrayCollection;
var arrCol:ArrayCollection = new ArrayCollection();
var arr:Array = arrCol.source;
Objects can be cloned in Actionscript 3 using the ByteArray object.

private function cloneObject(obj:Object):Object {
var byteArr:ByteArray = new ByteArray();
byteArr.writeObject(obj);
byteArr.position = 0;
var clonedObj:Object = byteArr.readObject();
return clonedObj;
}

An issue is that if you want to stuff them in an ArrayCollection as a strongly typed object, you cant cast as part of the process to the object. They end up in the ArrayCollection as null. It is better to make a copy() method in the object that needs to be cloned and created a new instance of that object and then filling up its member variables anew.

public function copy():Article {
var article:Article = new Article();
article.title = this.title;
article.body = this.body;
return article;
}

One of those things where you try something and it doesn't work.
Cam Riley: South Sea Republic. Freedom, liberty, equity and an Australian Republic.