docs: def _handle_vectored_io_stripe(
              self, creds, options, store_raw_metadata, sa, entity, is_file,
              container, dir=None, file_snapshot=None):
          # type: (SourcePath, StorageCredentials, any, bool, StorageAccount,
          #        any, bool, str, str) -> StorageEntity
          """Handle Vectored IO stripe entries
          :param SourcePath self: this
          :param StorageCredentials creds: storage creds
          :param object options: download or synccopy options
          :param bool store_raw_metadata: store raw metadata
          :param StorageAccount sa: storage account
          :param object entity: Storage File or Blob object
          :param bool is_file: is a file object
          :param str container: container
          :param str dir: Azure File directory structure
          :rtype: StorageEntity
          :return: Azure storage entity object
          """
          vio = blobxfer.models.metadata.vectored_io_from_metadata(
              entity.metadata)
          if not isinstance(vio, blobxfer.models.metadata.VectoredStripe):
              ase = self._convert_to_storage_entity_with_encryption_metadata(
                  options, store_raw_metadata, sa, entity, None, is_file,
                  container, dir, file_snapshot)
              yield ase
              return
          # if this slice is not the first, ignore. the reason for this is
          # 1. Ensures direct get on a slice does nothing unless the
          # zero-th blob is retrieved/accessed (eliminates partial data
          # download), which will reconstruct all of the stripes via next
          # pointers
          # 2. Data is not retrieved multiple times for the same slice without
          # having to maintain a fetched map
          if vio.slice_id != 0:
              yield None
              return
          # yield this entity
          ase = self._convert_to_storage_entity_with_encryption_metadata(
              options, store_raw_metadata, sa, entity, vio, is_file, container,
              dir, file_snapshot)
          yield ase
          # iterate all slices
          while vio.next is not None:
              # follow next pointer
              sa = creds.get_storage_account(vio.next.storage_account_name)
              if is_file:
                  entity = blobxfer.operations.azure.file.get_file_properties(
                      sa.file_client, vio.next.container, vio.next.name,
                      snapshot=file_snapshot)
                  _, dir = blobxfer.util.explode_azure_path(vio.next.name)
              else:
                  entity = blobxfer.operations.azure.blob.get_blob_properties(
                      sa.block_blob_client, vio.next.container, vio.next.name,
                      ase.mode)
              vio = blobxfer.models.metadata.vectored_io_from_metadata(
                  entity.metadata)
              # yield next
              ase = self._convert_to_storage_entity_with_encryption_metadata(
                  options, store_raw_metadata, sa, entity, vio, is_file,
                  container, dir, file_snapshot)
              yield ase