code: func getTPMapMatchingExistingAntiAffinity(pod *v1.Pod, nodeInfoMap map[string]*schedulernodeinfo.NodeInfo) (*topologyPairsMaps, error) {
  	allNodeNames := make([]string, 0, len(nodeInfoMap))
  	for name := range nodeInfoMap {
  		allNodeNames = append(allNodeNames, name)
  	}
  
  	var lock sync.Mutex
  	var firstError error
  
  	topologyMaps := newTopologyPairsMaps()
  
  	appendTopologyPairsMaps := func(toAppend *topologyPairsMaps) {
  		lock.Lock()
  		defer lock.Unlock()
  		topologyMaps.appendMaps(toAppend)
  	}
  	catchError := func(err error) {
  		lock.Lock()
  		defer lock.Unlock()
  		if firstError == nil {
  			firstError = err
  		}
  	}
  
  	ctx, cancel := context.WithCancel(context.Background())
  
  	processNode := func(i int) {
  		nodeInfo := nodeInfoMap[allNodeNames[i]]
  		node := nodeInfo.Node()
  		if node == nil {
  			catchError(fmt.Errorf("node not found"))
  			return
  		}
  		for _, existingPod := range nodeInfo.PodsWithAffinity() {
  			existingPodTopologyMaps, err := getMatchingAntiAffinityTopologyPairsOfPod(pod, existingPod, node)
  			if err != nil {
  				catchError(err)
  				cancel()
  				return
  			}
  			appendTopologyPairsMaps(existingPodTopologyMaps)
  		}
  	}
  	workqueue.ParallelizeUntil(ctx, 16, len(allNodeNames), processNode)
  	return topologyMaps, firstError
  }
docs: // getTPMapMatchingExistingAntiAffinity calculates the following for each existing pod on each node:
  // (1) Whether it has PodAntiAffinity
  // (2) Whether any AffinityTerm matches the incoming pod