if (_cachedComponentsByGlobalID == null) {
_cachedComponents = new NSMutableArray();
_cachedComponentsByGlobalID = new NSMutableDictionary();
addChildrenOfComponentToArray(null, result, ec);
int level = 0;
for (Enumeration e = result.objectEnumerator(); e.hasMoreElements();) {
Component component = (Component) e.nextElement();
String sortOrder = (level < 10 ? "0" : "") + (level);
_cachedComponentsByGlobalID.setObjectForKey(sortOrder, component.permanentGlobalID());
_cachedComponents.addObject(component.permanentGlobalID());
level++;