code: func NewWatchingConfigMapManager(kubeClient clientset.Interface) Manager {
  	listConfigMap := func(namespace string, opts metav1.ListOptions) (runtime.Object, error) {
  		return kubeClient.CoreV1().ConfigMaps(namespace).List(opts)
  	}
  	watchConfigMap := func(namespace string, opts metav1.ListOptions) (watch.Interface, error) {
  		return kubeClient.CoreV1().ConfigMaps(namespace).Watch(opts)
  	}
  	newConfigMap := func() runtime.Object {
  		return &v1.ConfigMap{}
  	}
  	gr := corev1.Resource("configmap")
  	return &configMapManager{
  		manager: manager.NewWatchBasedManager(listConfigMap, watchConfigMap, newConfigMap, gr, getConfigMapNames),
  	}
  }
docs: // NewWatchingConfigMapManager creates a manager that keeps a cache of all configmaps
  // necessary for registered pods.
  // It implements the following logic:
  // - whenever a pod is created or updated, we start inidvidual watches for all
  //   referenced objects that aren't referenced from other registered pods
  // - every GetObject() returns a value from local cache propagated via watches