code: def init(self, only_mount=None, skip_mount=None, swallow_exceptions=True):
          
          if swallow_exceptions:
              self.exception = None
  
          try:
              if not self._should_mount(only_mount, skip_mount):
                  yield self
                  return
  
              if not self.init_volume():
                  yield self
                  return
  
          except ImageMounterError as e:
              if swallow_exceptions:
                  self.exception = e
              else:
                  raise
  
          if not self.volumes:
              yield self
          else:
              for v in self.volumes:
                  for s in v.init(only_mount, skip_mount, swallow_exceptions):
                      yield s
docs: Generator that mounts this volume and either yields itself or recursively generates its subvolumes.
  
          More specifically, this function will call :func:`load_fsstat_data` (iff *no_stats* is False), followed by
          :func:`mount`, followed by a call to :func:`detect_mountpoint`, after which ``self`` is yielded, or the result
          of the :func:`init` call on each subvolume is yielded
  
          :param only_mount: if specified, only volume indexes in this list are mounted. Volume indexes are strings.
          :param skip_mount: if specified, volume indexes in this list are not mounted.
          :param swallow_exceptions: if True, any error occuring when mounting the volume is swallowed and added as an
              exception attribute to the yielded objects.