docs: def verify(self):
          """
          ## FOR DEBUGGING ONLY ##
          Checks the table to ensure that the invariants are held.
          """
          if self.all_intervals:
              ## top_node.all_children() == self.all_intervals
              try:
                  assert self.top_node.all_children() == self.all_intervals
              except AssertionError as e:
                  print(
                      'Error: the tree and the membership set are out of sync!'
                  )
                  tivs = set(self.top_node.all_children())
                  print('top_node.all_children() - all_intervals:')
                  try:
                      pprint
                  except NameError:
                      from pprint import pprint
                  pprint(tivs - self.all_intervals)
                  print('all_intervals - top_node.all_children():')
                  pprint(self.all_intervals - tivs)
                  raise e
  
              ## All members are Intervals
              for iv in self:
                  assert isinstance(iv, Interval), (
                      "Error: Only Interval objects allowed in IntervalTree:"
                      " {0}".format(iv)
                  )
  
              ## No null intervals
              for iv in self:
                  assert not iv.is_null(), (
                      "Error: Null Interval objects not allowed in IntervalTree:"
                      " {0}".format(iv)
                  )
  
              ## Reconstruct boundary_table
              bound_check = {}
              for iv in self:
                  if iv.begin in bound_check:
                      bound_check[iv.begin] += 1
                  else:
                      bound_check[iv.begin] = 1
                  if iv.end in bound_check:
                      bound_check[iv.end] += 1
                  else:
                      bound_check[iv.end] = 1
  
              ## Reconstructed boundary table (bound_check) ==? boundary_table
              assert set(self.boundary_table.keys()) == set(bound_check.keys()),\
                  'Error: boundary_table is out of sync with ' \
                  'the intervals in the tree!'
  
              # For efficiency reasons this should be iteritems in Py2, but we
              # don't care much for efficiency in debug methods anyway.
              for key, val in self.boundary_table.items():
                  assert bound_check[key] == val, \
                      'Error: boundary_table[{0}] should be {1},' \
                      ' but is {2}!'.format(
                          key, bound_check[key], val)
  
              ## Internal tree structure
              self.top_node.verify(set())
          else:
              ## Verify empty tree
              assert not self.boundary_table, \
                  "Error: boundary table should be empty!"
              assert self.top_node is None, \
                  "Error: top_node isn't None!"