Just a quick overview of something I added that I was meaning to do for a long time. It makes a huge difference when porting from things like ArrayCollection to Royale ArrayList. It saved me hours of menial stuff on something I had to do recently, and that was also a time-consuming task that both Carlos and I experienced when working on his app.
The latest updates include support for IArrayList and BinaryData to be used in for each loops and also to use indexed array access. This works the same (and uses the same code) to make it work between swf and js - it is metadata driven. This only works with strong typing - it is compile-time only, and follows normal inheritance rules (so AMFBinaryData should also work the same because it inherits from BinaryData, for example). So you can do (assuming myArrayList and myOtherArrayList are either IArrayList typed or some implementing type or subclass such as ArrayList or ArrayListView): myArrayList[0] = myOtherArrayList[100] and it will generate: myArrayList.setItemAt(myOtherArrayList.getItemAt(100),0) or: myBinaryData[0] = 255; and things like: for each(var byte:uint in myBinaryData) .... for-each loops (and for-in loops) are supported without special methods or properties needed on the classes that are supported. There is a single support function in Language that provides backing support and is included in the build only if it is needed. At the moment it is a one-size-fits-all support function. The loops behave like normal as3 for loops, and handle null target values and also loop target mutation inside the loop (e.g removeAll() on an ArrayList loop target instance inside the loop will stop the loop early). This could also be a safer option for things like XMLList and ArrayCollection as well, I did not consider that yet, but I will test those in the coming days.