code: def detect(self, volume_system, vstype='detect'):
          
  
          # Loop over all volumes in image.
          for p in self._find_volumes(volume_system, vstype):
              import pytsk3
  
              volume = volume_system._make_subvolume(
                  index=self._format_index(volume_system, p.addr),
                  offset=p.start * volume_system.disk.block_size,
                  size=p.len * volume_system.disk.block_size
              )
              # Fill volume with more information
              volume.info['fsdescription'] = p.desc.strip().decode('utf-8')
  
              if p.flags == pytsk3.TSK_VS_PART_FLAG_ALLOC:
                  volume.flag = 'alloc'
                  volume.slot = _util.determine_slot(p.table_num, p.slot_num)
                  volume_system._assign_disktype_data(volume)
                  logger.info("Found allocated {2}: block offset: {0}, length: {1} ".format(p.start, p.len,
                                                                                            volume.info['fsdescription']))
              elif p.flags == pytsk3.TSK_VS_PART_FLAG_UNALLOC:
                  volume.flag = 'unalloc'
                  logger.info("Found unallocated space: block offset: {0}, length: {1} ".format(p.start, p.len))
              elif p.flags == pytsk3.TSK_VS_PART_FLAG_META:
                  volume.flag = 'meta'
                  logger.info("Found meta volume: block offset: {0}, length: {1} ".format(p.start, p.len))
  
              yield volume
docs: Generator that mounts every partition of this image and yields the mountpoint.