docs: def _prune(self):
          """ Get rid of all intermediate nodes that aren't needed. """
          done = False
          while not done:
              done = True
              for node in [node for node in self.nodes.values() if node.intermediate]:
                  if not [dep for dep in self.nodes.values() if dep.previous == node.volume]:
                      # logger.debug("Removing unnecessary node %s", node)
                      del self.nodes[node.volume]
                      done = False