docs: def condense(self):
          '''If siblings have the same label, merge them. If they have edge lengths, the resulting ``Node`` will have the larger of the lengths'''
          self.resolve_polytomies(); labels_below = dict(); longest_leaf_dist = dict()
          for node in self.traverse_postorder():
              if node.is_leaf():
                  labels_below[node] = [node.label]; longest_leaf_dist[node] = None
              else:
                  labels_below[node] = set()
                  for c in node.children:
                      labels_below[node].update(labels_below[c])
                      d = longest_leaf_dist[c]
                      if c.edge_length is not None:
                          if d is None:
                              d = 0
                          d += c.edge_length
                      if node not in longest_leaf_dist or longest_leaf_dist[node] is None or (d is not None and d > longest_leaf_dist[node]):
                          longest_leaf_dist[node] = d
          nodes = deque(); nodes.append(self.root)
          while len(nodes) != 0:
              node = nodes.pop()
              if node.is_leaf():
                  continue
              if len(labels_below[node]) == 1:
                  node.label = labels_below[node].pop(); node.children = list()
                  if longest_leaf_dist[node] is not None:
                      if node.edge_length is None:
                          node.edge_length = 0
                      node.edge_length += longest_leaf_dist[node]
              else:
                  nodes.extend(node.children)