     //
     //--------------------------------------------------------------------------
 
-	/**
-	 *  @private
-	 *  Initialized flag
-	 */
-	private var initialized:Boolean = false;
+    /**
+     *  @private
+     *  Initialized flag
+     */
+    private var initialized:Boolean = false;
 
     //--------------------------------------------------------------------------
     //

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

    //----------------------------------
	//  basedOn
    //----------------------------------

	[Inspectable(category="General")]

	/**
	 *  The name of the view state upon which this view state is based, or
	 *  <code>null</code> if this view state is not based on a named view state.
	 *  If this value is <code>null</code>, the view state is based on a root
	 *  state that consists of the properties, styles, event handlers, and
	 *  children that you define for a component without using a State class.
	 *
	 *  @default null
	 */
	public var basedOn:String;

    //----------------------------------
	//  name
    //----------------------------------

	[Inspectable(category="General")]

    /**
     *  The name of the view state.
	 *  State names must be unique for a given component.
	 *  This property must be set.
     */
	public var name:String;

    //----------------------------------
	//  overrides
    //----------------------------------

	[ArrayElementType("mx.states.IOverride")]
	[Inspectable(category="General")]

	/**
	 *  The overrides for this view state, as an Array of objects that implement
	 *  the IOverride interface. These overrides are applied in order when the
	 *  state is entered, and removed in reverse order when the state is exited.
	 *
	 *  <p>The following Flex classes implement the IOverride interface and let you
	 *  define the view state characteristics:</p>
	 *  <ul>
	 * 		<li>AddChild</li>
	 * 		<li>RemoveChild</li>
	 * 		<li>SetEventHandler</li>
	 * 		<li>SetProperty</li>
	 * 		<li>SetStyle</li>
	 *  </ul>
	 *
	 *  <p>The <code>overrides</code> property is the default property of the
	 *  State class. You can omit the <code>&lt;mx:overrides&gt;</code> tag
	 *  and its child <code>&lt;mx:Array&gt;</code>tag if you use MXML tag
	 *  syntax to define the overrides.</p>
	 */
	public var overrides:Array /* of IOverride */ = [];

    //--------------------------------------------------------------------------
    //
    //  Methods

     */
    mx_internal function initialize():void
    {
        if (!initialized)
        {
            initialized = true;
            for (var i:int = 0; i < overrides.length; i++)
            {
                IOverride(overrides[i]).initialize();
            }
        }
    }

    /**
     *  @private
     *  Dispatches the "enterState" event.
     */
    mx_internal function dispatchEnterState():void
    {
        dispatchEvent(new FlexEvent(FlexEvent.ENTER_STATE));
    }

    /**
     *  @private
     *  Dispatches the "exitState" event.
     */
    mx_internal function dispatchExitState():void
    {
        dispatchEvent(new FlexEvent(FlexEvent.EXIT_STATE));
    }
}

}
