         super.text = value;
     }
 
-	//--------------------------------------------------------------------------
-	//
-	//  Properties
-	//
-	//--------------------------------------------------------------------------
-
-	//----------------------------------
-	//  content
-	//----------------------------------
-
-	/**
-	 *  Documentation is not currently available.
-	 */
-	protected var _content:Object;
-		
-	/**
-	 *  Documentation is not currently available.
-	 */
-	public function get content():Object 
-	{
-		return _content;
-	}
-	
-	/**
-	 *  @private
-	 */
-	public function set content(value:Object):void
-	{
-		if (value != _content)
-		{
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  content
+    //----------------------------------
+
+    /**
+     *  @private
+     */
+    protected var _content:Object;
+        
+    /**
+     *  The text contained in the TextGraphic element.
+     *  
+     *  <p>The contents of this property can be a sequence of characters, &lt;p&gt;, &lt;br/&gt; or &lt;span&gt; elements. 
+     *  The &lt;p&gt; and &lt;span&gt; elements can be implied, depending on how you use the style properties.</p>
+     *  
+     *  <p>If this property has text content and no explicit paragraph tag, a paragraph tag is automatically generated for the text.</p>
+     *  
+     *  <p>The following table describes the tags that can be used in the <code>content</code> property:
+     *  
+     *  <table>
+     *    <tr>
+     *      <td>&lt;p&gt;</td>
+     *      <td>Starts a new paragraph. A &lt;p&gt; can be a child of a TextGraphic. Children are character sequences, 
+     *          &lt;br/&gt; elements, or &lt;span&gt; elements. Every &lt;p&gt; has at least one &lt;span&gt; that can be implied. 
+     *          Character sequences that are direct children of &lt;p&gt; are in an implied &lt;span&gt;.</td>
+     *    </tr>
+     *    <tr>
+     *      <td>&lt;span&gt;</td>
+     *      <td>All character sequences are contained in one or more &lt;span&gt; elements. 
+     *          Explicit &lt;span&gt; elements can be used for formatting runs of characters within a paragraph. 
+     *          Every &lt;span&gt; element is a child of a &lt;p&gt; element. A &lt;span&gt; can contain character 
+     *          sequences and/or &lt;br/&gt; elements. A &lt;span&gt; element can be empty. Unlike in XHTML, &lt;span&gt; elements
+     *          must not be nested. The reason for this is the increased cost in number of objects required to represent the text.</td>
+     *    </tr>
+     *    <tr>
+     *      <td>&lt;br/&gt;</td>
+     *      <td>Behaves as a Unicode line separator character. It does not end the paragraph, it merely forces a line break at the 
+     *          position where it appears. Always a child of &lt;span&gt; elements, though the 
+     *          &lt;span&gt; element can be implied. The &lt;br/&gt; element must have no children (it must be an empty tag).</td>
+     *    </tr>
+     *  </table>
+     */
+    public function get content():Object 
+    {
+        return _content;
+    }
+    
+    /**
+     *  @private
+     */
+    public function set content(value:Object):void
+    {
+        if (value != _content)
+        {
             // Setting 'content' temporarily causes 'text' to become null.
             // Later, after the 'content' has been committed into the TextFlow,
             // getting 'text' will extract the text from the TextFlow.
             mx_internal::_text = null;
             textChanged = false;
 
-			var oldValue:Object = _content;
-			_content = value;
-			dispatchPropertyChangeEvent("content", oldValue, value);
-
-			invalidateTextLines("content");
-			invalidateSize();
-			invalidateDisplayList();
-		}
-	}
-	
-	//--------------------------------------------------------------------------
-	//
-	//  Overridden methods: GraphicElement
-	//
-	//--------------------------------------------------------------------------
-
-	/**
-	 *  @inheritDoc
-	 */
+            var oldValue:Object = _content;
+            _content = value;
+            dispatchPropertyChangeEvent("content", oldValue, value);
+
+            invalidateTextLines("content");
+            invalidateSize();
+            invalidateDisplayList();
+        }
+    }
+    
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods: GraphicElement
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @inheritDoc
+     */
     override protected function measure():void
     {
-		compose(explicitWidth, explicitHeight);
-
-		var bounds:Rectangle = textFlowComposer.bounds;
-		measuredWidth = Math.ceil(bounds.width);
-		measuredHeight = Math.ceil(bounds.height);
-	}
-	
-	/**
-	 *  @inheritDoc
-	 */
+        compose(explicitWidth, explicitHeight);
+
+        var bounds:Rectangle = textFlowComposer.bounds;
+        measuredWidth = Math.ceil(bounds.width);
+        measuredHeight = Math.ceil(bounds.height);
+    }
+    
+    /**
+     *  @inheritDoc
+     */
     override protected function updateDisplayList(unscaledWidth:Number, 
                                                   unscaledHeight:Number):void
-	{
-		super.updateDisplayList(unscaledWidth, unscaledHeight);
-		
-		compose(unscaledWidth, unscaledHeight);
-	}
-
-	/**
-	 *  @inheritDoc
-	 */
+    {
+        super.updateDisplayList(unscaledWidth, unscaledHeight);
+        
+        compose(unscaledWidth, unscaledHeight);
+    }
+
+    /**
+     *  @inheritDoc
+     */
     override public function stylesInitialized():void
     {
         super.stylesInitialized();

        return mx_internal::_text;
    }

	/**
	 *  @private
	 */
    override public function set text(value:String):void
    {
		// If 'text' is being set after 'content', ignore it
        // because 'content' has precedence.
        if (contentChanged)
            return;

[DefaultProperty("content")]

/**
 *  Defines text in FXG.
 *  
 *  <p>This class can display richly-formatted text, with multiple character and paragraph formats. 
 *  However, it is non-interactive: it doesn't support scrolling, selection, or editing.</p>
 *  
 *  <p>A TextGraphic element defines a text box, specified in the parent Group element's coordinate space, 
 *  to contain the provided text. The text box is specified using the x/y and width/height attributes on the TextGraphic element.</p>
 *  
 *  <p>Text is rendered as a graphic element similar to paths and shapes, but with a restricted subset of rendering options. 
 *  TextGraphic elements are always rendered using a solid fill color, modified by any opacity, blend mode, and color transformation 
 *  defined by parent elements, and clipped to any clipping content defined on its parent elements. TextGraphic content is only filled, 
 *  not stroked.</p>
 *  
 *  <p>The TextGraphic element automatically clips the text rendering to the bounds of the text box.</p>
 *  
 *  <p>If you do not specify the value of the <code>width</code> or <code>height</code> properties, or if the specified value
 *  of these properties is 0, the width and height are calculated based on the text content.</p>
 */
public class TextGraphic extends TextGraphicElement
{
    include "../core/Version.as";

    //--------------------------------------------------------------------------
    //
    //  Class variables
    //
    //--------------------------------------------------------------------------

    /**
     *  @private
     *  Since this static var gets initialized by calling a method
     *  in another class, we initialize it in the constructor to avoid
     *  any class-initialization-order problems.
     */
    private static var textImporter:ITextImporter;

    //--------------------------------------------------------------------------
    //
    //  Constructor
    //
    //--------------------------------------------------------------------------

    /**
     *  Constructor. 
     */
    public function TextGraphic()
    {
        super();

        if (!textImporter)
            textImporter = TextFilter.getImporter(TextFilter.TCAL_FORMAT);

        _content = textFlow = createEmptyTextFlow();
    }
    
    //--------------------------------------------------------------------------
    //
    //  Variables
    //
    //--------------------------------------------------------------------------
    
    /**
     *  @private
     */
    private var textFlow:TextFlow;

    /**
     *  @private
