docs: def is_equal(self, other):
          """
          Two beliefstates are equal if all of their part names are equal and all
          of their cell's values return True for is_equal().
  
          Note: this only compares the items in the DictCell, not `pos`,
          `environment_variables` or `deferred_effects`.
          """
          return hash(self) == hash(other)
          for (this, that) in itertools.izip_longest(self, other):
              if that[0] is None or this[0] != that[0]:
                  # compare attribute names
                  return False
              if not this[1].is_equal(that[1]):
                  # compare values
                  return False
          return True