 			var subPath:Array = [];
 			for each (var name:* in _targetPath)
 			{
-				if (node is ILinkableDynamicObject)
-					addPathDependency(node as ILinkableDynamicObject);
+				if (node is ILinkableCompositeObject)
+					addPathDependency(node as ILinkableCompositeObject, name);
 				
 				subPath[0] = name;
 				var child:ILinkableObject = sm.getObject(node, subPath);


package weave.core
{
	import flash.utils.Dictionary;
	
	import weave.api.core.ICallbackCollection;
	import weave.api.core.IDisposableObject;
	import weave.api.core.ILinkableDynamicObject;
	import weave.api.core.ILinkableHashMap;
	import weave.api.core.ILinkableObject;
	import weave.api.core.ISessionManager;
	import weave.compiler.StandardLib;
	
	/**
	 * This is used to dynamically attach a set of callbacks to different targets.

		private var _target:ILinkableObject; // the current target or ancestor of the to-be-target
		private var _foundTarget:Boolean = true; // false when _target is not the desired target
		protected var _targetPath:Array; // the path that is being watched
		private var _pathDependencies:Dictionary2D = new Dictionary2D(true, false); // (ILinkableCompositeObject, String) -> child object
		
		/**
		 * This is the linkable object currently being watched.
