 		/*
 			// JavaScript test code for path dependency case
 			var lhm = weave.path('lhm').remove().request('LinkableHashMap');
+			
 			var a = lhm.push('a').request('LinkableDynamicObject').state(lhm.getPath('b', null));
+			
+			a.addCallback(function () {
+			if (a.getType(null))
+			console.log('a.getState(null): ', JSON.stringify(a.getState(null)));
+			else
+			console.log('a has no internal object');
+			}, false, true);
+			
 			var b = lhm.push('b').request('LinkableDynamicObject').state(lhm.getPath('c'));
+			
+			// a has no internal object
+			
 			var c = lhm.push('c').request('LinkableDynamicObject').request(null, 'LinkableString').state(null, 'c value');
 			
-			a.addCallback(function(){
-				if (a.getType(null))
-					console.log('a.getState(null): ', JSON.stringify(a.getState(null)));
-				else
-					console.log('a has no internal object');
-			}, true, true);
-			
-			// a.getState(null): [{"className":"weave.core::LinkableString","sessionState":"c value","objectName":null}]
+			// a.getState(null): []
+			// a.getState(null): [{"className":"weave.core::LinkableString","objectName":null,"sessionState":null}]
+			// a.getState(null): [{"className":"weave.core::LinkableString","objectName":null,"sessionState":"c value"}]
 			
 			b.remove(null);
 			

						if (_target != null)
						{
							// path dependency code will detect changes to this node
							target = null;
							// must trigger here because _foundtarget is false
							sm.getCallbackCollection(this).triggerCallbacks();
						}
					}
					else
						target = node;
					return;
				}
			}
			
			// we found a desired target if there is no type restriction or the object fits the restriction
			_foundTarget = !_typeRestriction || node is _typeRestriction;
			target = node;
		}
		
		/**

			if (!_targetPath)
			{
				_foundTarget = true;
				internalSetTarget(null);
				return;
			}
			
