     private function textContainerManager_flowOperationEndHandler(
                         event:FlowOperationEvent):void
     {
-        //trace("flowOperationEnd", "generation", textFlow.generation);
+        //trace("flowOperationEnd", "level", event.level);
         
         // Paste is a special case.  Any mods have to be made to the text
         // which includes what was pasted.
         if (event.operation is PasteOperation)
             handlePasteOperation(PasteOperation(event.operation));
-
+    }
+
+    /**
+     *  @private
+     *  Called when the TextContainerManager dispatches an 'operationComplete' 
+     *  event after an editing operation.
+     */
+    private function textContainerManager_flowOperationCompleteHandler(
+        event:FlowOperationEvent):void
+    {
+        //trace("flowOperationComplete", "level", event.level);
+        
         // Dispatch a 'change' event from the RichEditableText
         // as notification that an editing operation has occurred.
-        if (dispatchChangeAndChangingEvents)
+        // The flow is now in a state that it can be manipulated.
+        // The level will be 0 for single operations, and at the end
+        // of a composite operation.
+        if (dispatchChangeAndChangingEvents && event.level == 0)
         {
             var newEvent:TextOperationEvent =
                 new TextOperationEvent(TextOperationEvent.CHANGE);

        _textContainerManager.addEventListener(
            FlowOperationEvent.FLOW_OPERATION_END,
            textContainerManager_flowOperationEndHandler);

        _textContainerManager.addEventListener(
            StatusChangeEvent.INLINE_GRAPHIC_STATUS_CHANGE, 

 
        // Dispatch a 'changing' event from the RichEditableText
        // as notification that an editing operation is about to occur.
        // The level will be 0 for single operations, and at the start
        // of a composite operation.
        if (dispatchChangeAndChangingEvents && event.level == 0)
        {
            var newEvent:TextOperationEvent =
                new TextOperationEvent(TextOperationEvent.CHANGING);
