      */
     public function appendText(text:String):void
     {
+        // Make sure all properties are committed before doing the append.
+        validateNow();
+
         // Always use the EditManager regardless of the values of
         // selectable, editable and enabled.
-        var priorManager:ISelectionManager = textFlow.interactionManager;
-        switchInteractionManager(textFlow, editManager);
-        
+        var priorEditingMode:String = getEditingMode(textFlow.interactionManager);
+        switchToEditingMode(textFlow, EditingMode.READ_WRITE);
+        
+        // An append is an insert with the selection set to the end.
         textFlow.interactionManager.setSelection(int.MAX_VALUE, int.MAX_VALUE);
-        EditManager(textFlow.interactionManager).insertText(text);
-        textFlow.flowComposer.updateAllContainers();        
-        
-        // Restore the prior manager if it wasn't an EditManager.
-        switchInteractionManager(textFlow, priorManager);
+        insertText(text);
+
+        // Restore the prior editing mode.
+        switchToEditingMode(textFlow, priorEditingMode);
     }
 
     /**

                        _priorSelectionAnchorPosition, 
                        _priorSelectionActivePosition);
        }
        
        // ToDo: don't think this is really needed
        textFlow.flowComposer.updateAllContainers();        

    }
    
    /**
     *  @private
     */

     */
    public function insertText(text:String):void
    {        
        // Make sure all properties are committed before doing the insert.
        validateNow();

        // Always use the EditManager regardless of the values of
        // selectable, editable and enabled.
        var priorEditingMode:String = getEditingMode(textFlow.interactionManager);
        switchToEditingMode(textFlow, EditingMode.READ_WRITE);
        
        // This does nothing if there is not an insertion point, ie
        // there is no selection.
        EditManager(textFlow.interactionManager).insertText(text);

        // Update TLF display.  This initiates the InsertTextOperation.
        textFlow.flowComposer.updateAllContainers();        

        // Restore the prior editing mode.
        switchToEditingMode(textFlow, priorEditingMode);
    }
    
    /**
