 		
 		
 		/**
-		 * initializeHierarchySubtree
 		 * @param subtreeNode A node in the hierarchy representing the root of the subtree to initialize, or null to initialize the root of the hierarchy.
 		 */
 		public function initializeHierarchySubtree(subtreeNode:XML = null):void

		private var _root:ILinkableHashMap = WeaveAPI.globalHashMap;
		
		/**
		 * attributeHierarchy
		 * @return An AttributeHierarchy object that will be updated when new pieces of the hierarchy are filled in.
		 */
		private const _attributeHierarchy:AttributeHierarchy = newLinkableChild(this, AttributeHierarchy);

			// add callback to new IDataSource or IAttributeColumn so we refresh the hierarchy when it changes
			var newObj:ILinkableObject = _root.childListCallbacks.lastObjectAdded;
			if (!(newObj is MultiDataSource))
			{
				if (newObj is IDataSource || newObj is IAttributeColumn)
				{
					registerLinkableChild(this, newObj);
					getCallbackCollection(newObj).addImmediateCallback(this, handleHierarchyChange);
				}
			}
			
			handleHierarchyChange();
		}
