int snapshottableSize(long epoch) {
        if (epoch == LATEST_EPOCH) {
            return baseSize();
        } else {
            Iterator<Snapshot> iterator = snapshotRegistry.iterator(epoch);
            while (iterator.hasNext()) {
                Snapshot snapshot = iterator.next();
                HashTier<T> tier = snapshot.getDelta(SnapshottableHashTable.this);
                if (tier != null) {
                    return tier.size;
                }
            }
            return baseSize();
        }
    }
Iterate over the values that existed in the hash table during a specific snapshot.

You can use this iterator even if you are making changes to the map.
The snapshot is immutable and will always show up the same.
server-common/src/main/java/org/apache/kafka/timeline/SnapshottableHashTable.java