     //  Overridden methods: GraphicElement
     //
     //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    override public function setSharedDisplayObject(
+									displayObject:DisplayObject):Boolean
+    {
+        // TextGraphicElement always requires its own display object because
+        // Group doesn't support IGraphicElements with multiple display objects.
+        return false;
+    }
+
+    /**
+     *  @private
+     */
+    override protected function setDisplayObject(value:DisplayObject):void
+    {        
+        if (displayObject == value)
+            return;
+
+        // There is an exisiting d.o. so this element is either being moved
+        // to a different container (value != null) or it is being removed 
+        // (value == null).
+        if (displayObject)
+        {
+            // If there was a scroll rect remove it before we lose the reference
+            // to the display object. 
+            clip(false, 0, 0);
+        
+            displayObjectChanged = true;        
+            invalidateProperties();
+        }
+             
+        super.setDisplayObject(value);
+    }    
+  
+    /**
+     *  @private
+     */
+    override public function parentChanged(value:Group):void
+    {
+        // FIXME (egeorgie): we add event listener to the parent, as adding event
+        // listener to the TextGraphicElement itself doesn't work, as we perform
+        // double invalidation, but our updateDisplayList gets called only once
+        // and  the code in the base GraphicElement class assumes that
+        // updateDisplayList will get called twice.
+        if (parent)
+            parent.removeEventListener(FlexEvent.UPDATE_COMPLETE, updateCompleteHandler);
+
+        // When this GraphicElement is removed from a Group,
+		// the Group calls this method with a null argument.
+		// In that case, the text lines must go away.
+	    if (!value)
+        {
+        	removeTextLines();
+        	releaseTextLines();
+        }
+        
+        super.parentChanged(value);
+
+        if (parent) 
+            parent.addEventListener(FlexEvent.UPDATE_COMPLETE, updateCompleteHandler);
+    }
 
     /**
      *  @private

    //--------------------------------------------------------------------------

    [Bindable(style="true")]
    /**
     *  @inheritDoc
     *  

    	visibleChanged = true;

    	invalidateDisplayList();
	}
             
    //--------------------------------------------------------------------------
    //
