docs: function () {
        if (this._booted) {
          return;
        }
  
        if (_emberEnvironment.ENV._ENABLE_LEGACY_VIEW_SUPPORT && !warnedAboutLegacyViewAddon) {
          _emberMetalDebug.deprecate('Support for the `ember-legacy-views` addon will end soon, please remove it from your application.', false, { id: 'ember-legacy-views', until: '2.6.0', url: 'http://emberjs.com/deprecations/v1.x/#toc_ember-view' });
  
          warnedAboutLegacyViewAddon = true;
        }
  
        if (_emberEnvironment.ENV._ENABLE_LEGACY_CONTROLLER_SUPPORT && !warnedAboutLegacyControllerAddon) {
          _emberMetalDebug.warn('Support for the `ember-legacy-controllers` has been removed, please remove it from your application.', false, { id: 'ember-legacy-controllers', url: 'http://emberjs.com/deprecations/v1.x/#toc_objectcontroller' });
  
          warnedAboutLegacyControllerAddon = true;
        }
  
        // Even though this returns synchronously, we still need to make sure the
        // boot promise exists for book-keeping purposes: if anything went wrong in
        // the boot process, we need to store the error as a rejection on the boot
        // promise so that a future caller of `boot()` can tell what failed.
        var defer = this._bootResolver = new _emberRuntimeExtRsvp.default.defer();
        this._bootPromise = defer.promise;
  
        try {
          this.runInitializers();
          _emberRuntimeSystemLazy_load.runLoadHooks('application', this);
          this.advanceReadiness();
          // Continues to `didBecomeReady`
        } catch (error) {
          // For the asynchronous boot path
          defer.reject(error);
  
          // For the synchronous boot path
          throw error;
        }
      }