      */
     protected var _content:Object;
     
-	/**
-	 *  @private
-	 */
-	private var contentChanged:Boolean = false;
-	
+    /**
+     *  @private
+     */
+    private var contentChanged:Boolean = false;
+    
     /**
      *  @private
      *  This metadata tells the MXML compiler to disable some of its default

     */
    override public function set text(value:String):void
    {
    	// Treat setting the 'text' to null
    	// as if it were set to the empty String
    	// (which is the default state).
    	if (value == null)
    		value = "";
		
		// If the most recent change to _text was caused by calling this method,
		// then it's safe to short-cicuit in the same way that TextBase does.
		if ((source == "text") && (value == _text))
			return;
    	
    	// Don't return early if value is the same as _text,
    	// because _text might have been produced from setting
    	// 'textFlow' or 'content'.
    	// For example, if you set a TextFlow corresponding to
    	// "Hello <span color="OxFF0000">World</span>"
    	// and then get the 'text', it will be the String "Hello World"
    	// But if you then set the 'text' to "Hello World"
    	// this represents a change: the "World" should no longer be red.
    	
    	_text = value;
    	textChanged = true;
		source = "text";
    	
    	// If more than one of 'text', 'textFlow', and 'content' is set,
    	// the last one set wins.
    	textFlowChanged = false;
    	contentChanged = false;
    	
        // If there was a textFlow remove its damage handler.
        removeDamageHandler();

        // The other two are now invalid and must be recalculated when needed.
		_textFlow = null;
    	_content = null;
    	
    	factory = staticStringFactory;
    	
		invalidateTextLines();
		invalidateProperties();
		invalidateSize();
		invalidateDisplayList();
	}
    
    //--------------------------------------------------------------------------
    //

    /**
     *  @private
     */
    private function createTextFlowFromContent(content:Object):TextFlow
    {
        var textFlow:TextFlow ;
        
        if (content is TextFlow)
        {
            textFlow = content as TextFlow;
        }
        else if (content is Array)
        {
            textFlow = new TextFlow();
            textFlow.whiteSpaceCollapse = getStyle("whiteSpaceCollapse");
            textFlow.mxmlChildren = content as Array;
            textFlow.whiteSpaceCollapse = undefined;
        }
        else
        {
            textFlow = new TextFlow();
            textFlow.whiteSpaceCollapse = getStyle("whiteSpaceCollapse");
            textFlow.mxmlChildren = [ content ];
            textFlow.whiteSpaceCollapse = undefined;
        }
        
        return textFlow;
    }
    
    /**
     *  @private
     *  Uses TextLineFactory to compose the textFlow
     *  into as many TextLines as fit into the bounds.
     */
    private function createTextLines():void
    {
        // Clear any previously generated TextLines from the textLines Array.
