 {
     include "../core/Version.as";
 
+	//--------------------------------------------------------------------------
+    //
+    //  Class variables
+    //
+    //--------------------------------------------------------------------------
+	    
+    // We can re-use single instances of a few FTE classes over and over,
+    // since they just serve as a factory for the TextLines that we care about.
+    
+    /**
+	 *  @private
+	 */
+	private static var staticTextBlock:TextBlock = new TextBlock();
+
+	/**
+	 *  @private
+	 */
+	private static var staticTextElement:TextElement = new TextElement();
+
+    /**
+     *  @private
+     */
+    private static var staticSpaceJustifier:SpaceJustifier =
+        new SpaceJustifier();
+
+    /**
+     *  @private
+     */
+    private static var staticEastAsianJustifier:EastAsianJustifier =
+        new EastAsianJustifier();
+
     //--------------------------------------------------------------------------
     //
     //  Class methods

        s = getStyle("typographicCase");
        if (s != null)
        	elementFormat.typographicCase = s;
        
        textBlockComposer.removeTextLines(container);
        
        var bounds:Rectangle = textBlockComposer.bounds;
        bounds.x = 0;
        bounds.y = 0;
        bounds.width = width;
        bounds.height = height;

        textBlockComposer.direction = getStyle("direction");
        textBlockComposer.justificationRule = getStyle("justificationRule");
        textBlockComposer.justificationStyle = getStyle("justificationStyle");
        textBlockComposer.lineBreak = getStyle("lineBreak");
        textBlockComposer.lineHeight = getStyle("lineHeight");
        textBlockComposer.lineThrough = getStyle("lineThrough");
        textBlockComposer.paddingBottom = getStyle("paddingBottom");
        textBlockComposer.paddingLeft = getStyle("paddingLeft");
        textBlockComposer.paddingRight = getStyle("paddingRight");
        textBlockComposer.paddingTop = getStyle("paddingTop");
        setTabStops(textBlockComposer);
        textBlockComposer.textAlign = getStyle("textAlign");
        textBlockComposer.textAlignLast = getStyle("textAlignLast");
        textBlockComposer.textDecoration = getStyle("textDecoration");
        textBlockComposer.textJustify = getStyle("textJustify");
        textBlockComposer.verticalAlign = getStyle("verticalAlign");

        textBlockComposer.composeText(text, elementFormat);
                
        textBlockComposer.addTextLines(container);

        return textBlockComposer.isOverset;
    }

    /**
     *  @private

    
    //--------------------------------------------------------------------------
    //
    //  Overridden methods: GraphicElement
    //
    //--------------------------------------------------------------------------

    /**
     *  @private
     */
