code: func (meta *predicateMetadata) ShallowCopy() PredicateMetadata {
  	newPredMeta := &predicateMetadata{
  		pod:                      meta.pod,
  		podBestEffort:            meta.podBestEffort,
  		podRequest:               meta.podRequest,
  		serviceAffinityInUse:     meta.serviceAffinityInUse,
  		ignoredExtendedResources: meta.ignoredExtendedResources,
  	}
  	newPredMeta.podPorts = append([]*v1.ContainerPort(nil), meta.podPorts...)
  	newPredMeta.topologyPairsPotentialAffinityPods = newTopologyPairsMaps()
  	newPredMeta.topologyPairsPotentialAffinityPods.appendMaps(meta.topologyPairsPotentialAffinityPods)
  	newPredMeta.topologyPairsPotentialAntiAffinityPods = newTopologyPairsMaps()
  	newPredMeta.topologyPairsPotentialAntiAffinityPods.appendMaps(meta.topologyPairsPotentialAntiAffinityPods)
  	newPredMeta.topologyPairsAntiAffinityPodsMap = newTopologyPairsMaps()
  	newPredMeta.topologyPairsAntiAffinityPodsMap.appendMaps(meta.topologyPairsAntiAffinityPodsMap)
  	newPredMeta.serviceAffinityMatchingPodServices = append([]*v1.Service(nil),
  		meta.serviceAffinityMatchingPodServices...)
  	newPredMeta.serviceAffinityMatchingPodList = append([]*v1.Pod(nil),
  		meta.serviceAffinityMatchingPodList...)
  	return (PredicateMetadata)(newPredMeta)
  }
docs: // ShallowCopy copies a metadata struct into a new struct and creates a copy of
  // its maps and slices, but it does not copy the contents of pointer values.