private boolean similarToImpl(ClusterState other, final NodeStateCmp nodeStateCmp) {
        if (other == this) {
            return true; // We're definitely similar to ourselves.
        }
        // Two cluster states are considered similar if they are both down. When clusters
        // are down, their individual node states do not matter to ideal state computations
        // and content nodes therefore do not need to observe them.
        if (state.equals(State.DOWN) && other.state.equals(State.DOWN)) {
            return true;
        }
        if (!metaInformationSimilarTo(other)) {
            return false;
        }
        if (distributorNodes.notSimilarTo(other.distributorNodes, nodeStateCmp)) return false;
        if (storageNodes.notSimilarTo(other.storageNodes, nodeStateCmp)) return false;
        return true;
    }
Parse a given cluster state string into a returned ClusterState instance, wrapping any
parse exceptions in a RuntimeException.
vdslib/src/main/java/com/yahoo/vdslib/state/ClusterState.java