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`.

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