code: func NewPopulator(config *common.RuntimeConfig) *Populator {
  	p := &Populator{RuntimeConfig: config}
  	sharedInformer := config.InformerFactory.Core().V1().PersistentVolumes()
  	sharedInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
  		AddFunc: func(obj interface{}) {
  			pv, ok := obj.(*v1.PersistentVolume)
  			if !ok {
  				glog.Errorf("Added object is not a v1.PersistentVolume type")
  				return
  			}
  			p.handlePVUpdate(pv)
  		},
  		UpdateFunc: func(oldObj, newObj interface{}) {
  			newPV, ok := newObj.(*v1.PersistentVolume)
  			if !ok {
  				glog.Errorf("Updated object is not a v1.PersistentVolume type")
  				return
  			}
  			p.handlePVUpdate(newPV)
  		},
  		DeleteFunc: func(obj interface{}) {
  			pv, ok := obj.(*v1.PersistentVolume)
  			if !ok {
  				glog.Errorf("Added object is not a v1.PersistentVolume type")
  				return
  			}
  			p.handlePVDelete(pv)
  		},
  	})
  	return p
  }
docs: // NewPopulator returns a Populator object to update the PV cache