     /**
      *  @private
      */
+    mx_internal function createEmptyTextLine(height:Number=NaN):void
+    {
+        // override this
+    }
+    
+    /**
+     *  @private
+     */
     mx_internal function invalidateTextLines():void
     {
         invalidateCompose = true;

     *  @private
     *  The value of bounds.width, before the compose was done.
     */
    private var _composeWidth:Number;

    /**
     *  @private
     *  The value of bounds.height, before the compose was done.
     */
    private var _composeHeight:Number;
    
    /**
     *  @private

    {
        if (!validateBaselinePosition())
            return NaN;

        // Create an empty text line so we can measure the height. If the
        // text is vertically aligned then need the composeHeight so the 
        // baseline remains consistent when the width is so narrow there
        // are no textLines.
        if (textLines.length == 0)
            createEmptyTextLine(_composeHeight);
        
        // Return the baseline of the first line of composed text.
        return textLines.length > 0 ? textLines[0].y : 0;
