code: func (s *deploymentLister) GetDeploymentsForReplicaSet(rs *apps.ReplicaSet) ([]*apps.Deployment, error) {
  	if len(rs.Labels) == 0 {
  		return nil, fmt.Errorf("no deployments found for ReplicaSet %v because it has no labels", rs.Name)
  	}
  
  	// TODO: MODIFY THIS METHOD so that it checks for the podTemplateSpecHash label
  	dList, err := s.Deployments(rs.Namespace).List(labels.Everything())
  	if err != nil {
  		return nil, err
  	}
  
  	var deployments []*apps.Deployment
  	for _, d := range dList {
  		selector, err := metav1.LabelSelectorAsSelector(d.Spec.Selector)
  		if err != nil {
  			return nil, fmt.Errorf("invalid label selector: %v", err)
  		}
  		// If a deployment with a nil or empty selector creeps in, it should match nothing, not everything.
  		if selector.Empty() || !selector.Matches(labels.Set(rs.Labels)) {
  			continue
  		}
  		deployments = append(deployments, d)
  	}
  
  	if len(deployments) == 0 {
  		return nil, fmt.Errorf("could not find deployments set for ReplicaSet %s in namespace %s with labels: %v", rs.Name, rs.Namespace, rs.Labels)
  	}
  
  	return deployments, nil
  }
docs: // GetDeploymentsForReplicaSet returns a list of Deployments that potentially
  // match a ReplicaSet. Only the one specified in the ReplicaSet's ControllerRef
  // will actually manage it.
  // Returns an error only if no matching Deployments are found.