code: def get_farthest_node(self, topology_only=False):
          
          # Init fasthest node to current farthest leaf
          farthest_node, farthest_dist = self.get_farthest_leaf(
              topology_only=topology_only)
  
          prev = self
          cdist = 0.0 if topology_only else prev.dist
          current = prev.up
          while current is not None:
              for ch in current.children:
                  if ch != prev:
                      if not ch.is_leaf():
                          fnode, fdist = ch.get_farthest_leaf(
                              topology_only=topology_only)
                      else:
                          fnode = ch
                          fdist = 0
                      if topology_only:
                          fdist += 1.0
                      else:
                          fdist += ch.dist
                      if cdist+fdist > farthest_dist:
                          farthest_dist = cdist + fdist
                          farthest_node = fnode
              prev = current
              if topology_only:
                  cdist += 1
              else:
                  cdist  += prev.dist
              current = prev.up
          return farthest_node, farthest_dist
docs: Returns the node's farthest descendant or ancestor node, and the
          distance to it.
  
          :argument False topology_only: If set to True, distance
            between nodes will be referred to the number of nodes
            between them. In other words, topological distance will be
            used instead of branch length distances.
  
          :return: A tuple containing the farthest node referred to the
            current node and the distance to it.