     
     private var oldY:Number;
     
-    // Size change detection vars
-    /**
-     * @private
-     */
-    protected var trackSizeChanges:Boolean = false;
-    
     private var oldWidth:Number;
     
     private var oldHeight:Number;

    //--------------------------------------------------------------------------
    
    /**
     *  The main function that watches our size
     *  
     *  @langversion 3.0
     *  @playerversion Flash 9

    //  Public variables
    //
    //--------------------------------------------------------------------------
    
    //----------------------------------
    //  trackSizeChanges
    //----------------------------------

    /**
     * @private
     */
    private var _trackSizeChanges:Boolean = false;

    [Inspectable(category="General")]

    /**
     *  Whether we should actively watch changes to the size of the flash object.  
     *  If this is set to <code>true</code>, then every frame, the size of the flash 
     *  object will be determined.  If the size has changed, then the flash object 
     *  will scale appropriately to fit its explicit bounds (or it will resize and 
     *  notify its parent if there is no explicit sizing).
     * 
     *  <p>Note: Setting this property to <code>true</code> may be expensive because 
     *  we now are asking the flash object its current size every single frame.</p>
     * 
     *  @default false
     *  
     *  @langversion 3.0
     *  @playerversion Flash 9
     *  @playerversion AIR 1.1
     *  @productversion Flex 4
     */
    public function get trackSizeChanges():Boolean
    {
        return _trackSizeChanges;
    }

    /**
     *  @private
     */
    public function set trackSizeChanges(value:Boolean):void
    {
        if (_trackSizeChanges == value)
            return;

        _trackSizeChanges = value;

        if(_trackSizeChanges)
        {
            addEventListener(Event.ENTER_FRAME, trackSizeChangesEnterFrameHandler, false, 0, true);
        }
        else
        {
            removeEventListener(Event.ENTER_FRAME, trackSizeChangesEnterFrameHandler);
        }
    }
    
    //----------------------------------
    //  trackStateChanges
    //----------------------------------

    /**
     * @private
     */
    private var _trackStateChanges:Boolean = false;

    [Inspectable(category="General")]

    /**
     *  Whether we should actively watch changes to the label of the flash object.  
     *  The Flex <code>currentState</code> property depends on this flash label.  
     *  If this is set to <code>true</code>, then every frame, the label of the flash
     *  obejct will be quieried.  If the label has changed, that will become the new 
     *  <code>currentState</code> for the Flex object.
     * 
     *  <p>Note: Setting this property to <code>true</code> may be expensive because 
     *  we now are asking the flash object for is current label every single frame.</p>
     * 
     *  @default false
     *  
     *  @langversion 3.0
     *  @playerversion Flash 9
     *  @playerversion AIR 1.1
     *  @productversion Flex 4
     */
    public function get trackStateChanges():Boolean
    {
        return _trackStateChanges;
    }

    /**
     *  @private
     */
    public function set trackStateChanges(value:Boolean):void
    {
        if (_trackStateChanges == value)
            return;

        _trackStateChanges = value;

        if(_trackStateChanges)
        {
            addEventListener(Event.ENTER_FRAME, trackStateChangesEnterFrameHandler, false, 0, true);
        }
        else
        {
            removeEventListener(Event.ENTER_FRAME, trackStateChangesEnterFrameHandler);
        }
    }
    
    //----------------------------------
    //  x
