code: def _iter_all_paths(start, end, rand=False, path=tuple()):
      
      path = path + (start, )
      if start is end:
          yield path
      else:
          nodes = [start.lo, start.hi]
          if rand: # pragma: no cover
              random.shuffle(nodes)
          for node in nodes:
              if node is not None:
                  yield from _iter_all_paths(node, end, rand, path)
docs: Iterate through all paths from start to end.