code: func TranslateInTreePVToCSI(pv *v1.PersistentVolume) (*v1.PersistentVolume, error) {
  	if pv == nil {
  		return nil, errors.New("persistent volume was nil")
  	}
  	copiedPV := pv.DeepCopy()
  	for _, curPlugin := range inTreePlugins {
  		if curPlugin.CanSupport(copiedPV) {
  			return curPlugin.TranslateInTreePVToCSI(copiedPV)
  		}
  	}
  	return nil, fmt.Errorf("could not find in-tree plugin translation logic for %#v", copiedPV.Name)
  }
docs: // TranslateInTreePVToCSI takes a persistent volume and will translate
  // the in-tree source to a CSI Source if the translation logic
  // has been implemented. The input persistent volume will not
  // be modified