public boolean similarTo(ClusterStateBundle other) {
        if (!baselineState.getClusterState().similarToIgnoringInitProgress(other.baselineState.getClusterState())) {
            return false;
        }
        if (clusterFeedIsBlocked() != other.clusterFeedIsBlocked()) {
            return false;
        }
        if (clusterFeedIsBlocked() && !feedBlock.similarTo(other.feedBlock)) {
            return false;
        }
        // Distribution configs must match exactly for bundles to be similar.
        // It may be the case that they are both null, in which case they are also considered equal.
        if (!Objects.equals(distributionConfig, other.distributionConfig)) {
            return false;
        }
        // FIXME we currently treat mismatching bucket space sets as unchanged to avoid breaking some tests
        return derivedBucketSpaceStates.entrySet().stream()
                .allMatch(entry -> other.derivedBucketSpaceStates.getOrDefault(entry.getKey(), entry.getValue())
                        .getClusterState().similarToIgnoringInitProgress(entry.getValue().getClusterState()));
    }
@Test
    void similarity_test_considers_cluster_feed_block_concrete_exhaustion_set() {
        var blockingBundleNoSet        = createTestBundleWithFeedBlock("foo");
        var blockingBundleWithSet      = createTestBundleWithFeedBlock("bar", setOf(exhaustion(1, "beer"), exhaustion(1, "wine")));
        var blockingBundleWithOtherSet = createTestBundleWithFeedBlock("bar", setOf(exhaustion(1, "beer"), exhaustion(1, "soda")));

        assertTrue(blockingBundleNoSet.similarTo(blockingBundleNoSet));
        assertTrue(blockingBundleWithSet.similarTo(blockingBundleWithSet));
        assertFalse(blockingBundleWithSet.similarTo(blockingBundleWithOtherSet));
        assertFalse(blockingBundleNoSet.similarTo(blockingBundleWithSet));
        assertFalse(blockingBundleNoSet.similarTo(blockingBundleWithOtherSet));
    }