code: def prune(self, edge, length=None):
          
  
          length = length or edge.length
          edge_length_check(length, edge)
  
          n = edge.head_node
          self.tree._tree.prune_subtree(n, suppress_unifurcations=False)
          n.edge_length = length
          self.tree._dirty = True
          return n
docs: Prunes a subtree from the main Tree, retaining an edge length
          specified by length (defaults to entire length). The length is sanity-
          checked by edge_length_check, to ensure it is within the bounds
          [0, edge.length].
  
          Returns the basal node of the pruned subtree.