code: func (provider *Provider) Initialize(initializer *ledger.Initializer) error {
  	var err error
  	configHistoryMgr := confighistory.NewMgr(initializer.DeployedChaincodeInfoProvider)
  	collElgNotifier := &collElgNotifier{
  		initializer.DeployedChaincodeInfoProvider,
  		initializer.MembershipInfoProvider,
  		make(map[string]collElgListener),
  	}
  	stateListeners := initializer.StateListeners
  	stateListeners = append(stateListeners, collElgNotifier)
  	stateListeners = append(stateListeners, configHistoryMgr)
  
  	provider.initializer = initializer
  	provider.configHistoryMgr = configHistoryMgr
  	provider.stateListeners = stateListeners
  	provider.collElgNotifier = collElgNotifier
  	provider.bookkeepingProvider = bookkeeping.NewProvider()
  	provider.vdbProvider, err = privacyenabledstate.NewCommonStorageDBProvider(provider.bookkeepingProvider, initializer.MetricsProvider, initializer.HealthCheckRegistry)
  	if err != nil {
  		return err
  	}
  	provider.stats = newStats(initializer.MetricsProvider)
  	provider.recoverUnderConstructionLedger()
  	return nil
  }
docs: // Initialize implements the corresponding method from interface ledger.PeerLedgerProvider