pass any DisplayObjectContainer to a new instance of DisplayList and get back an array of all descendants.

[as3]
package {

import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;

public dynamic class DisplayList extends Array {

public function DisplayList(target:DisplayObjectContainer):void {
recurse(target);
}

private function recurse(target:DisplayObjectContainer):void {
var qty:uint = target.numChildren;
for (var i:int = 0; i < qty; i++) {
var child:DisplayObject = target.getChildAt(i);
push(child);
if (child is DisplayObjectContainer) {
recurse(child as DisplayObjectContainer);
}
}
}
}
}
[/as3]