code: 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