def METHOD_NAME(
    self,
    snapshot_ids: t.Optional[t.Iterable[SnapshotIdLike]],
    hydrate_seeds: bool = False,
) -> t.Dict[SnapshotId, Snapshot]:
    if not snapshot_ids:
        return self.state_sync.METHOD_NAME(snapshot_ids, hydrate_seeds)
    existing = {}
    missing = set()
    now = now_timestamp()
    expire_at = now + self.ttl * 1000
    for s in snapshot_ids:
        snapshot_id = s.snapshot_id
        snapshot = self._from_cache(snapshot_id, now)
        if snapshot is None:
            self.snapshot_cache[snapshot_id] = (False, expire_at)
            missing.add(snapshot_id)
        elif snapshot:
            if (
                hydrate_seeds
                and isinstance(snapshot.node, SeedModel)
                and not snapshot.node.is_hydrated
            ):
                missing.add(snapshot_id)
            else:
                existing[snapshot_id] = snapshot
    if missing:
        existing.update(self.state_sync.METHOD_NAME(missing, hydrate_seeds))
    for snapshot_id, snapshot in existing.items():
        cached = self._from_cache(snapshot_id, now)
        if cached and (not isinstance(cached.node, SeedModel) or cached.node.is_hydrated):
            continue
        self.snapshot_cache[snapshot_id] = (snapshot, expire_at)
    return existing