code: func getSourceFromSpec(spec *volume.Spec) (*api.CSIVolumeSource, *api.CSIPersistentVolumeSource, error) {
  	if spec == nil {
  		return nil, nil, fmt.Errorf("volume.Spec nil")
  	}
  	if spec.Volume != nil && spec.PersistentVolume != nil {
  		return nil, nil, fmt.Errorf("volume.Spec has both volume and persistent volume sources")
  	}
  	if spec.Volume != nil && spec.Volume.CSI != nil && utilfeature.DefaultFeatureGate.Enabled(features.CSIInlineVolume) {
  		return spec.Volume.CSI, nil, nil
  	}
  	if spec.PersistentVolume != nil &&
  		spec.PersistentVolume.Spec.CSI != nil {
  		return nil, spec.PersistentVolume.Spec.CSI, nil
  	}
  
  	return nil, nil, fmt.Errorf("volume source not found in volume.Spec")
  }
docs: // getSourceFromSpec returns either CSIVolumeSource or CSIPersistentVolumeSource, but not both