code: func (dc *DisruptionController) buildDisruptedPodMap(pods []*v1.Pod, pdb *policy.PodDisruptionBudget, currentTime time.Time) (map[string]metav1.Time, *time.Time) {
  	disruptedPods := pdb.Status.DisruptedPods
  	result := make(map[string]metav1.Time)
  	var recheckTime *time.Time
  
  	if disruptedPods == nil || len(disruptedPods) == 0 {
  		return result, recheckTime
  	}
  	for _, pod := range pods {
  		if pod.DeletionTimestamp != nil {
  			// Already being deleted.
  			continue
  		}
  		disruptionTime, found := disruptedPods[pod.Name]
  		if !found {
  			// Pod not on the list.
  			continue
  		}
  		expectedDeletion := disruptionTime.Time.Add(DeletionTimeout)
  		if expectedDeletion.Before(currentTime) {
  			klog.V(1).Infof("Pod %s/%s was expected to be deleted at %s but it wasn't, updating pdb %s/%s",
  				pod.Namespace, pod.Name, disruptionTime.String(), pdb.Namespace, pdb.Name)
  			dc.recorder.Eventf(pod, v1.EventTypeWarning, "NotDeleted", "Pod was expected by PDB %s/%s to be deleted but it wasn't",
  				pdb.Namespace, pdb.Namespace)
  		} else {
  			if recheckTime == nil || expectedDeletion.Before(*recheckTime) {
  				recheckTime = &expectedDeletion
  			}
  			result[pod.Name] = disruptionTime
  		}
  	}
  	return result, recheckTime
  }
docs: // Builds new PodDisruption map, possibly removing items that refer to non-existing, already deleted
  // or not-deleted at all items. Also returns an information when this check should be repeated.