code: def reconstruct(self):
          
          volumes = list(sorted((v for v in self.get_volumes() if v.mountpoint and v.info.get('lastmountpoint')),
                                key=lambda v: v.numeric_index))
  
          try:
              root = list(filter(lambda x: x.info.get('lastmountpoint') == '/', volumes))[0]
          except IndexError:
              logger.error("Could not find / while reconstructing, aborting!")
              raise NoRootFoundError()
  
          volumes.remove(root)
  
          for v in volumes:
              if v.info.get('lastmountpoint') == root.info.get('lastmountpoint'):
                  logger.debug("Skipping volume %s as it has the same root as %s", v, root)
                  continue
              v.bindmount(os.path.join(root.mountpoint, v.info.get('lastmountpoint')[1:]))
          return root
docs: Reconstructs the filesystem of all volumes mounted by the parser by inspecting the last mount point and
          bind mounting everything.
  
          :raises: NoRootFoundError if no root could be found
          :return: the root :class:`Volume`