docs: def compute_depth(self):
          """
          Recursively computes true depth of the subtree. Should only
          be needed for debugging. Unless something is wrong, the
          depth field should reflect the correct depth of the subtree.
          """
          left_depth = self.left_node.compute_depth() if self.left_node else 0
          right_depth = self.right_node.compute_depth() if self.right_node else 0
          return 1 + max(left_depth, right_depth)