code: func New(opts ...Option) grpc.UnaryServerInterceptor {
  
  	i := &interceptor{}
  
  	// Configure the interceptor's options.
  	for _, setOpt := range opts {
  		setOpt(&i.opts)
  	}
  
  	// If no lock provider is configured then set the default,
  	// in-memory provider.
  	if i.opts.locker == nil {
  		i.opts.locker = &defaultLockProvider{
  			volIDLocks:   map[string]gosync.TryLocker{},
  			volNameLocks: map[string]gosync.TryLocker{},
  		}
  	}
  
  	return i.handle
  }
docs: // New returns a new server-side, gRPC interceptor
  // that provides serial access to volume resources across the following
  // RPCs:
  //
  //  * CreateVolume
  //  * DeleteVolume
  //  * ControllerPublishVolume
  //  * ControllerUnpublishVolume
  //  * NodePublishVolume
  //  * NodeUnpublishVolume