 			}
 
 			// run callbacks for each link after all links have been updated.
-			for each (link in linksThatChanged)
-				link.triggerCallbacks();
+			for each (link in linksThatChanged)
+			{
+				if (objectWasDisposed(link))
+				{
+					// this could possibly happen and is likely no cause for alarm - just a side-effect of triggering callbacks
+					//trace("LinkableDynamicObject was disposed while triggering another one's callbacks");
+					continue;
+				}
+				link.triggerCallbacks();
+			}
 		}
 
 		/**

	import weave.api.disposeObjects;
	import weave.api.getLinkableDescendants;
	import weave.api.getLinkableOwner;
	import weave.api.registerDisposableChild;
	import weave.api.registerLinkableChild;

	/**
	 * This object links to an internal ILinkableObject.

						{
							// sanity checks
							if (link._locked)
								throw new Error("LinkableDynamicObject was locked while referenced global object was disposed.");
							if (link._internalObject != oldObject)
								throw new Error("LinkableDynamicObject was pointing to the wrong global object.");
							
