I think a solution will be to extend the ArrayCollection and to override
setItemAt() method (and other methods if needed) and to prevent the call of
super.setItemAt() if the reference of passed item is equal to the existing item
at the given position, something like:
override public function setItemAt(item:Object, index:int):Object
{
if (item == getItemAt(index))
{
return item;
}
super.setItemAt(item, index);
}
you may implement even a check of property equalities, but this only for
objects with the same type or dynamic one.
cheers!