code: func (plugin *flexVolumePlugin) newMounterInternal(spec *volume.Spec, pod *api.Pod, mounter mount.Interface, runner exec.Interface) (volume.Mounter, error) {
  	sourceDriver, err := getDriver(spec)
  	if err != nil {
  		return nil, err
  	}
  
  	readOnly, err := getReadOnly(spec)
  	if err != nil {
  		return nil, err
  	}
  
  	var metricsProvider volume.MetricsProvider
  	if plugin.capabilities.SupportsMetrics {
  		metricsProvider = volume.NewMetricsStatFS(plugin.host.GetPodVolumeDir(
  			pod.UID, utilstrings.EscapeQualifiedName(sourceDriver), spec.Name()))
  	} else {
  		metricsProvider = &volume.MetricsNil{}
  	}
  
  	return &flexVolumeMounter{
  		flexVolume: &flexVolume{
  			driverName:            sourceDriver,
  			execPath:              plugin.getExecutable(),
  			mounter:               mounter,
  			plugin:                plugin,
  			podName:               pod.Name,
  			podUID:                pod.UID,
  			podNamespace:          pod.Namespace,
  			podServiceAccountName: pod.Spec.ServiceAccountName,
  			volName:               spec.Name(),
  			MetricsProvider:       metricsProvider,
  		},
  		runner:   runner,
  		spec:     spec,
  		readOnly: readOnly,
  	}, nil
  }
docs: // newMounterInternal is the internal mounter routine to build the volume.