      */
     public function set autoRepeat(value:Boolean):void
     {
-        if (!flags.update(autoRepeatFlag, value))
-            return;
+        if (BitFlagUtil.isSet(flags, autoRepeatFlag) == value)
+            return;
+         
+        flags = BitFlagUtil.update(flags, autoRepeatFlag, value);
 
         checkAutoRepeatTimerConditions( isDown() );
     }

    {
        super.toolTip = value;

        flags.update(explicitToolTip, value != null);
        
        // If explicit tooltip is cleared, we need to make sure our
        // updateDisplayList is called, so that we add automatic tooltip
        // in case the label is truncated.
        if (!flags.isSet(explicitToolTip))
            invalidateDisplayList();
    }


            var isCurrentlyDown:Boolean = isDown();

            // Only if down state has changed, do we need to do something
            if (BitFlagUtil.isSet(flags, downEventFiredFlag) != isCurrentlyDown)
            {
                flags = BitFlagUtil.update(flags, downEventFiredFlag, isCurrentlyDown);
                if (isCurrentlyDown)
                    dispatchEvent(new FlexEvent(FlexEvent.BUTTON_DOWN));
            
