 import flash.utils.Timer;
 
 import mx.core.ILayoutElement;
-import mx.core.IVisualElement;
 import mx.core.UIComponentGlobals;
 import mx.core.mx_internal;
 import mx.events.DragEvent;
-import mx.managers.DragManager;
 import mx.managers.ILayoutManagerClient;
 import mx.utils.OnDemandEventDispatcher;
 
-import spark.components.Group;
 import spark.components.supportClasses.GroupBase;
+import spark.components.supportClasses.OverlayDepth;
 import spark.core.NavigationUnit;
 
 use namespace mx_internal;

    public function set dropIndicator(value:DisplayObject):void
    {
        if (_dropIndicator)
            // FIXME (egeorgie): use the overlay APIs instead.
            target.$removeChild(_dropIndicator);
        
        _dropIndicator = value;
        
        if (_dropIndicator)
        {
            _dropIndicator.visible = false;
            // FIXME (egeorgie): use the overlay APIs instead.
            target.addingChild(_dropIndicator);
            target.$addChild(_dropIndicator);
            target.childAdded(_dropIndicator);
            
            if (_dropIndicator is ILayoutManagerClient)
                UIComponentGlobals.layoutManager.validateClient(ILayoutManagerClient(_dropIndicator), true);             
        }
    }
    

        _dragScrollDelta = calculateDragScrollDelta(dropLocation,
                                                    dragScrollInterval,
                                                    dragScrollElapsedTime);
        if (_dragScrollDelta && (_dragScrollDelta.x != 0 || _dragScrollDelta.y != 0))
        {
            // Update the drag-scroll event
            _dragScrollEvent = dropLocation.dragEvent;
