I came across the requirement to copy an ArrayCollection by value instead of by reference. Here is the solutions I used:
private var myCollection:ArrayCollection = new ArrayCollection();
for (var k:Number = 0; k < myCurrentCollection.length; k++) {
myCollection.addItem(mx.utils.ObjectUtil.copy(myCurrentCollection[k]));
}