 
     /**
      *  @private
-     *  This set keeps track of which text formats were specified
-     *  on the graphic element's TextFlow as opposed to on the
-     *  graphic element itself.
-     *
-     *  For example, if you have
-     *
-     *      <TextGraphic fontSize="10">
-     *          <content>
-     *              <TextFlow fontSize="20">
-     *                  ...
-     *              </TextFlow>
-     *          </content>
-     *      </TextGraphic>
-     *
-     *  then this set would be { fontSize: 20 }.
+     *  This object is determined by the CSS styles of the TextGraphic
+     *  and is updated by createTextFlow() when the hostFormatsInvalid flag
+     *  is true.
      */
-    private var textFlowTextFormat:Object = {};
+    private var hostCharacterFormat:CharacterFormat = new CharacterFormat();
+
+    /**
+     *  @private
+     *  This object is determined by the CSS styles of the TextGraphic
+     *  and is updated by createTextFlow() when the hostFormatsInvalid flag
+     *  is true.
+     */
+    private var hostParagraphFormat:ParagraphFormat = new ParagraphFormat();
+
+    /**
+     *  @private
+     *  This object is determined by the CSS styles of the TextGraphic
+     *  and is updated by createTextFlow() when the hostFormatsInvalid flag
+     *  is true.
+     */
+    private var hostContainerFormat:ContainerFormat = new ContainerFormat();
+
+	/**
+	 *  @private
+     *  This flag indicates whether hostCharacterFormat, hostParagraphFormat,
+     *  and hostContainerFormat need to be recalculated from the CSS styles
+     *  of the TextGraphic. It is set true by stylesInitialized() and also
+     *  when styleChanged() is called with a null argument, indicating that
+     *  multiple styles have changed.
+	 */
+    private var hostFormatsInvalid:Boolean = false;
 
 	/**
 	 *  @private

		p.replaceChildren(0, 0, span);
		return textFlow;
	}
	
	/**
	 *  @private
	 */

				    textFlow = createEmptyTextFlow();
			    }
            }
        }

 		contentChanged = false;
		textChanged = false;

        if (hostFormatsInvalid)
        {
            for each (var p:String in TextUtil.ALL_FORMAT_NAMES)
            {
                setHostFormat(p);
            }
            hostFormatsInvalid = false;
        }

        textFlow.hostCharacterFormat = hostCharacterFormat;
        textFlow.hostParagraphFormat = hostParagraphFormat;
        textFlow.hostContainerFormat = hostContainerFormat;

		return textFlow;
	}

