code: func (asw *actualStateOfWorld) getNodeAndVolume(
  	volumeName v1.UniqueVolumeName, nodeName types.NodeName) (attachedVolume, nodeAttachedTo, error) {
  
  	volumeObj, volumeExists := asw.attachedVolumes[volumeName]
  	if volumeExists {
  		nodeObj, nodeExists := volumeObj.nodesAttachedTo[nodeName]
  		if nodeExists {
  			return volumeObj, nodeObj, nil
  		}
  	}
  
  	return attachedVolume{}, nodeAttachedTo{}, fmt.Errorf("volume %v is no longer attached to the node %q",
  		volumeName,
  		nodeName)
  }
docs: // Get the volume and node object from actual state of world
  // This is an internal function and caller should acquire and release the lock
  //
  // Note that this returns disconnected objects, so if you change the volume object you must set it back with
  // `asw.attachedVolumes[volumeName]=volumeObj`.
  //
  // If you change the node object you must use `volumeObj.nodesAttachedTo[nodeName] = nodeObj`
  // This is correct, because if volumeObj is empty this function returns an error, and nodesAttachedTo
  // map is a reference type, and thus mutating the copy changes the original map.