code: function(context, transition) {
          var controllerName = this.controllerName || this.routeName;
          var controller = this.controllerFor(controllerName, true);
  
          if (!controller) {
            controller =  this.generateController(controllerName, context);
          }
  
          // Assign the route's controller so that it can more easily be
          // referenced in action handlers
          this.controller = controller;
  
          if (this.setupControllers) {
            Ember.deprecate("Ember.Route.setupControllers is deprecated. Please use Ember.Route.setupController(controller, model) instead.");
            this.setupControllers(controller, context);
          } else {
            var states = get(this, '_qp.states');
            if (transition) {
              // Update the model dep values used to calculate cache keys.
              stashParamNames(this.router, transition.state.handlerInfos);
              controller._qpDelegate = states.changingKeys;
              controller._updateCacheParams(transition.params);
            }
            controller._qpDelegate = states.allowOverrides;
  
            if (transition) {
              var qpValues = getQueryParamsFor(this, transition.state);
              controller.setProperties(qpValues);
            }
  
            this.setupController(controller, context, transition);
          }
  
          if (this.renderTemplates) {
            Ember.deprecate("Ember.Route.renderTemplates is deprecated. Please use Ember.Route.renderTemplate(controller, model) instead.");
            this.renderTemplates(context);
          } else {
            this.renderTemplate(controller, context);
          }
        }
docs: This hook is the entry point for router.js
  
  @private
  @method setup