def _get_some_state_from_cache(self, group, types):
        is_all, state_dict_ids = self._state_group_cache.get(group)

        type_to_key = {}
        missing_types = set()
        for typ, state_key in types:
            if state_key is None:
                type_to_key[typ] = None
                missing_types.add((typ, state_key))
            else:
                if type_to_key.get(typ, object()) is not None:
                    type_to_key.setdefault(typ, set()).add(state_key)

                if (typ, state_key) not in state_dict_ids:
                    missing_types.add((typ, state_key))

        sentinel = object()

        def include(typ, state_key):
            valid_state_keys = type_to_key.get(typ, sentinel)
            if valid_state_keys is sentinel:
                return False
            if valid_state_keys is None:
                return True
            if state_key in valid_state_keys:
                return True
            return False

        got_all = not (missing_types or types is None)

        return {
            k: v for k, v in state_dict_ids.items()
            if include(k[0], k[1])
        }, missing_types, got_all
Checks if group is in cache. See `_get_state_for_groups`
dataset/ETHPy150Open matrix-org/synapse/synapse/storage/state.py/StateStore._get_some_state_from_cache