      *  @productversion Flex 3
      */
     private var events:Object;
+
+    /**
+     * True while handling a change event.  Used to prevent two way
+     * bindings from getting into an infinite loop.
+     */
+    private var isExecuting:Boolean;
 
     //--------------------------------------------------------------------------
     //

        this.next = next;
        events = {};
        useWeakReference = false;
    }

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

     */
    private function wrapHandler(event:Event):void
    {
        if (!isExecuting)
        {
            try
            {
                isExecuting = true;

                if (next)
                    next.reset(getHostPropertyValue());

                if (event is PropertyChangeEvent)
                {
                    if ((event as PropertyChangeEvent).property == name)
                        handler(event as PropertyChangeEvent);
                }
                else
                {
                    handler(event);
                }
            }
            finally
            {
                isExecuting = false;
            }
        }
    }

