code: func VisitPodConfigmapNames(pod *api.Pod, visitor Visitor) bool {
  	for i := range pod.Spec.InitContainers {
  		if !visitContainerConfigmapNames(&pod.Spec.InitContainers[i], visitor) {
  			return false
  		}
  	}
  	for i := range pod.Spec.Containers {
  		if !visitContainerConfigmapNames(&pod.Spec.Containers[i], visitor) {
  			return false
  		}
  	}
  	var source *api.VolumeSource
  	for i := range pod.Spec.Volumes {
  		source = &pod.Spec.Volumes[i].VolumeSource
  		switch {
  		case source.Projected != nil:
  			for j := range source.Projected.Sources {
  				if source.Projected.Sources[j].ConfigMap != nil {
  					if !visitor(source.Projected.Sources[j].ConfigMap.Name) {
  						return false
  					}
  				}
  			}
  		case source.ConfigMap != nil:
  			if !visitor(source.ConfigMap.Name) {
  				return false
  			}
  		}
  	}
  	return true
  }
docs: // VisitPodConfigmapNames invokes the visitor function with the name of every configmap
  // referenced by the pod spec. If visitor returns false, visiting is short-circuited.
  // Transitive references (e.g. pod -> pvc -> pv -> secret) are not visited.
  // Returns true if visiting completed, false if visiting was short-circuited.