code: function defineInjectable(opts) {
      return {
          providedIn: opts.providedIn || null, factory: opts.factory, value: undefined,
      };
  }
docs: @license
  Copyright Google Inc. All Rights Reserved.
  
  Use of this source code is governed by an MIT-style license that can be
  found in the LICENSE file at https://angular.io/license
   
  Construct an `InjectableDef` which defines how a token will be constructed by the DI system, and
  in which injectors (if any) it will be available.
  
  This should be assigned to a static `ngInjectableDef` field on a type, which will then be an
  `InjectableType`.
  
  Options:
  * `providedIn` determines which injectors will include the injectable, by either associating it
  with an `@NgModule` or other `InjectorType`, or by specifying that this injectable should be
  provided in the `'root'` injector, which will be the application-level injector in most apps.
  * `factory` gives the zero argument function which will create an instance of the injectable.
  The factory can call `inject` to access the `Injector` and request injection of dependencies.
  
  @experimental