      */    
     public function get selected():Boolean
     {
-        return BitFlagUtil.isSet(flags, selectedFlag);
+        return _selected;
     }
     
     /**

     */    
    public function set selected(value:Boolean):void
    {
        if (BitFlagUtil.isSet(flags, selectedFlag) == value)
            return;
         
        flags = BitFlagUtil.update(flags, selectedFlag, value);

        dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
        invalidateButtonState();
    }

    /**
     *  <code>true</code> if the button should display
     *  as if it has focus even if it doesn't.
     *  
     *  @langversion 3.0
     *  @playerversion Flash 10
     *  @playerversion AIR 1.5
     *  @productversion Flex 4
     */    
    public function get showFocusIndicator():Boolean
    {
        return BitFlagUtil.isSet(flags, showFocusIndicatorFlag);
    }
    
    /**
     *  @private
     */    
    public function set showFocusIndicator(value:Boolean):void
    {
        if (BitFlagUtil.isSet(flags, showFocusIndicatorFlag) == value)
            return;
         
        flags = BitFlagUtil.update(flags, showFocusIndicatorFlag, value);

		mx_internal::drawFocusAnyway = true;
		drawFocus(value);
    }

    //--------------------------------------------------------------------------

            return super.getCurrentSkinState() + "AndSelected";
    }

    //--------------------------------------------------------------------------
    //
    //  Event handling
    //
    //--------------------------------------------------------------------------

    /**
     *  @private
     */ 
    override protected function clickHandler(event:MouseEvent):void
    {
        super.clickHandler(event);
        selected = !selected;
        dispatchEvent(new Event(Event.CHANGE));
        event.updateAfterEvent();
    }
}

}
