code: def enumerate_paths(self):
          
          for path in self._enumerate_paths([]):
              flat_path = []
              weight = 1.0
              while path:
                  path, branch = path
                  weight *= branch.weight
                  flat_path.append(branch)
              yield weight, flat_path[::-1]
docs: Generate all possible paths starting from this branch set.
  
          :returns:
              Generator of two-item tuples. Each tuple contains weight
              of the path (calculated as a product of the weights of all path's
              branches) and list of path's :class:`Branch` objects. Total sum
              of all paths' weights is 1.0