         throw new Error("Too many simultaneous running flash.utils.Timer objects");
     }
 
+    private static function compareTimers (a :Buddy, b :Buddy) :int
+    {
+        // b-a rather than a-b so as to order low values before high
+        return b.expiration - a.expiration;
+    }
+
     protected static function heartbeat () :void
     {
         var now :int = getTimer();

        }
    }

    private static function compareTimers (a :Buddy, b :Buddy) :int
    {
        // b-a rather than a-b so as to order low values before high
        return b.expiration - a.expiration;
    }

    private var _currentCount :int;
    private var _delay :Number;
    private var _repeatCount :int;

    }

    static function createTimer (closure :Function, delay :Number,
                                 timeout :Boolean, args :Array) :uint
    {
        var timer :Timer = new Timer(delay, timeout ? 1 : 0);
        var thisIx = _timerIx;
