code: function providerDef(ctx, providerAst) {
      var /** @type {?} */ flags = 0;
      if (!providerAst.eager) {
          flags |= 4096 /* LazyProvider */;
      }
      if (providerAst.providerType === ProviderAstType.PrivateService) {
          flags |= 8192 /* PrivateProvider */;
      }
      providerAst.lifecycleHooks.forEach(function (lifecycleHook) {
          // for regular providers, we only support ngOnDestroy
          if (lifecycleHook === LifecycleHooks.OnDestroy ||
              providerAst.providerType === ProviderAstType.Directive ||
              providerAst.providerType === ProviderAstType.Component) {
              flags |= lifecycleHookToNodeFlag(lifecycleHook);
          }
      });
      var _a = providerAst.multiProvider ?
          multiProviderDef(ctx, flags, providerAst.providers) :
          singleProviderDef(ctx, flags, providerAst.providerType, providerAst.providers[0]), providerExpr = _a.providerExpr, providerFlags = _a.flags, depsExpr = _a.depsExpr;
      return {
          providerExpr: providerExpr,
          flags: providerFlags, depsExpr: depsExpr,
          tokenExpr: tokenExpr(ctx, providerAst.token),
      };
  }
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
   
  @param {?} ctx
  @param {?} providerAst
  @return {?}