 	/**
 	 * Provides an interface to a set of cached Entity objects.
 	 */
-    public class EntityCache implements ILinkableObject
+    public class EntityCache implements ILinkableObject, IDisposableObject
     {
 		/**
 		 * A special flag value to represent a root node, which doesn't actually exist.

    import mx.rpc.events.ResultEvent;
    
    import weave.api.core.ICallbackCollection;
    import weave.api.core.ILinkableObject;
    import weave.api.data.ColumnMetadata;
    import weave.api.data.EntityType;

		{
			//trace('invalidate',id, alsoInvalidateRelatives, entityCache[id]);
			callbacks.delayCallbacks();
			
			WeaveAPI.SessionManager.assignBusyTask(delayedCallback, this);
			
			// trigger callbacks if we haven't previously decided to fetch this id
			if (!idsToFetch[id])
