    /** * A Queue is a queue of {@link Ext.app.route.Route} instances managed by the * {@link Ext.app.route.Router} singleton if queueActions is set to `true`. *  * A developer shouldn't need to use this class as {@link Ext.app.route.Router} should * manage this class. When a {@link Ext.app.route.Route} is executed,it will automatically * keep running the queue until the queue is empty. * @private */Ext.define('Ext.app.route.Queue', {    /**     * The {@link Ext.util.MixedCollection} that will hold the queued     * {@link Ext.app.route.Route} and recognized arguments.     *     * @private     */    queue: null,     /**     * The token from the {@link Ext.app.route.Router} that is being enacted on.     */    token: null,     constructor : function(config) {        Ext.apply(this, config);         //Create the queue MixedCollection         this.queue = new Ext.util.MixedCollection();    },     /**     * Add a {@link Ext.app.route.Route} to the queue.     *     * @param {Ext.app.route.Route} route The route to add to the queue.     * @param {Object} args The arguments recognized by the {Ext.app.route.Route}.     */    queueAction : function (route, args) {        this.queue.add({            route : route,            args  : args        });    },     /**     * Clear all queued actions.     */    clearQueue : function() {        this.queue.removeAll();    },     /**     * Run the queue one by one.     */    runQueue : function() {        var queue  = this.queue,            action = queue.removeAt(0),            route;         if (action) {            route = action && action.route;             route.execute(this.token, action.args, this.onActionExecute, this);        }    },     /**     * Handle the execution of a queued action and optionally clear all queued actions.     *     * @param {Boolean} clearQueue If `true` was returned, will clear all queued actions.     */    onActionExecute : function(clearQueue) {        if (clearQueue) {            //clear all queued actions             this.clearQueue();        } else {            //continue with queue execution             this.runQueue();        }    }});