      */
     private var systemManager:ISystemManager;
 
+	/**
+	 *  @private
+	 *  the current object being validated
+	 *  it could be wrong if the validating object calls validateNow on something.
+	 */
+	private var currentObject:ILayoutManagerClient;
+	
     //--------------------------------------------------------------------------
     //
     //  Properties

            {
                // trace("LayoutManager calling validateProperties() on " + Object(obj) + " " + DisplayObject(obj).width + " " + DisplayObject(obj).height);

                obj.validateProperties();
                if (!obj.updateCompletePendingFlag)
                {
                    updateCompleteQueue.addObject(obj, obj.nestLevel);
                    obj.updateCompletePendingFlag = true;
                }

                // Once we start, don't stop.
                obj = ILayoutManagerClient(invalidatePropertiesQueue.removeSmallestChild(target));
            }

                {
                    // trace("LayoutManager calling validateDisplayList on " + Object(obj) + " " + DisplayObject(obj).width + " " + DisplayObject(obj).height);

					if (obj.nestLevel)
					{
						currentObject = obj;
	                    obj.validateDisplayList();
	                    if (!obj.updateCompletePendingFlag)
	                    {
	                        updateCompleteQueue.addObject(obj, obj.nestLevel);
	                        obj.updateCompletePendingFlag = true;
	                    }
					}
                    // trace("LayoutManager return from validateDisplayList on " + Object(obj) + " " + DisplayObject(obj).width + " " + DisplayObject(obj).height);

                    if (invalidateClientPropertiesFlag)
