 	import weave.api.data.IColumnReference;
 	import weave.api.data.IDataSource;
 	import weave.api.data.IQualifiedKey;
+	import weave.api.data.IWeaveTreeNode;
 	import weave.api.detectLinkableObjectChange;
 	import weave.api.disposeObject;
 	import weave.api.getCallbackCollection;

		{
			// do nothing
		}

		/**
		 * This function must be implemented by classes by extend AbstractDataSource.

			var leafNode:XML = HierarchyUtils.getLeafNodeFromPath(pathInHierarchy) || <empty/>;
			proxyColumn.setMetadata(leafNode.copy());

			var columnId:Object = proxyColumn.getMetadata(METADATA_COLUMN_INDEX);
			if (columnId)
			{
				columnId = int(columnId);
			}
			else
			{
				columnId = proxyColumn.getMetadata(METADATA_COLUMN_NAME);
				
				// backwards compatibility
				if (!columnId)
