 				return true;
 			}
 			
-			externalError("No ILinkableHashMap for which to reorder children at path " + Compiler.stringify(hashMapPath));
+			externalError("No ILinkableHashMap for which to reorder children at path {0}", Compiler.stringify(hashMapPath));
 			return false;
 		}
 		

				}
				if (object == null)
				{
					externalError("No ILinkableObject to which to add a callback at path or variable " + Compiler.stringify(scopeObjectPathOrVariableName));
					return false;
				}
				

		 */
		public function removeObject(objectPath:Array):Boolean
		{
			if (!objectPath || !objectPath.length)
			{
				externalError("Cannot remove root object");
				return false;
			}
			
			var parentPath:Array = objectPath.concat();
			var childName:Object = parentPath.pop();
			var parent:ILinkableObject = WeaveAPI.SessionManager.getObject(_rootObject, parentPath);
			
			var hashMap:ILinkableHashMap = parent as ILinkableHashMap;
			if (hashMap)
			{
				if (childName is Number)
					childName = hashMap.getNames()[childName];
				
				if (hashMap.objectIsLocked(childName as String))
				{
					externalError("Object is locked and cannot be removed (path: {0})", Compiler.stringify(objectPath));
					return false;
				}
				
				hashMap.removeObject(childName as String);
				return true;
			}
			
			var dynamicObject:ILinkableDynamicObject = parent as ILinkableDynamicObject;
			if (dynamicObject)
			{
				if (dynamicObject.locked)
				{
					externalError("Object is locked and cannot be removed (path: {0})", Compiler.stringify(objectPath));
					return false;
				}
				
				dynamicObject.removeObject();
				return true;
			}
			
			if (parent)
				externalError("Parent object does not support dynamic children, so cannot remove child at path {0}", Compiler.stringify(objectPath));
			else
				externalError("No parent from which to remove a child at path {0}", Compiler.stringify(objectPath));
			return false;
		}
		
