         {
             mouseUpDeselectTimer.stop();
             mouseUpDeselectTimer = null;
+        }
+    }
+    
+    /**
+     *  @private
+     */
+    private function dispatchButtonEvents():void
+    {
+        var isCurrentlyDown:Boolean = isDown();
+        
+        // Only if down state has changed, do we need to do something
+        if (_downEventFired != isCurrentlyDown)
+        {
+            if (isCurrentlyDown)
+                dispatchEvent(new FlexEvent(FlexEvent.BUTTON_DOWN));
+            
+            _downEventFired = isCurrentlyDown;
+            checkAutoRepeatTimerConditions(isCurrentlyDown);
         }
     }
     

        }
        else
        {
            mouseUpDeselectTimer_timerCompleteHandler();
        }
    }

        
        if (checkForButtonDownConditions)
        {
            dispatchButtonEvents();
            
            checkForButtonDownConditions = false;
        }
