docs: function (context, transition) {
        var controller;
  
        var controllerName = this.controllerName || this.routeName;
        var definedController = this.controllerFor(controllerName, true);
  
        if (!definedController) {
          controller = this.generateController(controllerName, context);
        } else {
          controller = definedController;
        }
  
        // Assign the route's controller so that it can more easily be
        // referenced in action handlers. Side effects. Side effects everywhere.
        if (!this.controller) {
          var propNames = _emberMetalProperty_get.get(this, '_qp.propertyNames');
          addQueryParamsObservers(controller, propNames);
          this.controller = controller;
        }
  
        var queryParams = _emberMetalProperty_get.get(this, '_qp');
  
        var states = queryParams.states;
        if (transition) {
          // Update the model dep values used to calculate cache keys.
          _emberRoutingUtils.stashParamNames(this.router, transition.state.handlerInfos);
  
          var params = transition.params;
          var allParams = queryParams.propertyNames;
          var cache = this._bucketCache;
  
          allParams.forEach(function (prop) {
            var aQp = queryParams.map[prop];
  
            aQp.values = params;
            var cacheKey = _emberRoutingUtils.calculateCacheKey(aQp.prefix, aQp.parts, aQp.values);
  
            if (cache) {
              var value = cache.lookup(cacheKey, prop, aQp.undecoratedDefaultValue);
              _emberMetalProperty_set.set(controller, prop, value);
            }
          });
        }
  
        controller._qpDelegate = states.allowOverrides;
  
        if (transition) {
          var qpValues = getQueryParamsFor(this, transition.state);
          controller.setProperties(qpValues);
        }
  
        this.setupController(controller, context, transition);
  
        if (!this._environment || this._environment.options.shouldRender) {
          this.renderTemplate(controller, context);
        }
      }