def get_hash(self, shallow=True, refresh=False):
        if shallow:
            if not hasattr(self, '_shallow_hash') or self._shallow_hash is None\
                    or refresh:
                self._shallow_hash = make_hash(self.matches_key(), 14)
            ret = self._shallow_hash
        else:
            if not hasattr(self, '_full_hash') or self._full_hash is None \
                    or refresh:
                ev_mk_list = sorted([ev.matches_key() for ev in self.evidence])
                self._full_hash = \
                    make_hash(self.matches_key() + str(ev_mk_list), 16)
            ret = self._full_hash
        return ret