 	import weavejs.api.core.ISessionManager;
 	import weavejs.api.data.IAttributeColumn;
 	import weavejs.core.LinkableFunction;
-	import weavejs.core.LinkablePlaceholder;
 	import weavejs.core.SessionStateLog;
 	import weavejs.path.WeavePath;
 	import weavejs.path.WeavePathUI;


		/**
		 * Requests that an object be created if it doesn't already exist at the given path.
		 * This function can also be used to assert that the object at the current path is of the type you expect it to be.
		 * @param path The path
		 * @param type The type
		 * @return Either an instance of the requested type, a LinkablePlaceholder, or null if the object could not be created.
		 */
		public function requestObject(path:Array/*/<string|number>/*/, type:Class):ILinkableObject
		{
			// Get parent object first in case there is some backwards compatibility code that gets
			// executed when it is accessed (registering deprecated class definitions, for example).

		 * Shortcut for WeaveAPI.SessionManager.getLinkableDescendants()
		 * @copy weave.api.core.ISessionManager#getLinkableDescendants()
		 */
		public static function getDescendants/*/<T>/*/(object:ILinkableObject, filter:/*/(new(..._:any[])=>T) | string/*/Class = null):Array/*/<T & ILinkableObject>/*/
		{
			if (filter is String)
				filter = Weave.getDefinition(String(filter), true);
