@Override
        public void verify() {
            for (Map.Entry<Integer, PersistentState> nodeEntry : cluster.nodes.entrySet()) {
                PersistentState state = nodeEntry.getValue();
                Optional<ElectionState> electionState = state.store.readElectionState();

                electionState.ifPresent(election -> {
                    if (election.epoch() >= epoch && election.hasLeader()) {
                        if (epoch == election.epoch() && leaderId.isPresent()) {
                            assertEquals(leaderId.getAsInt(), election.leaderId());
                        } else {
                            epoch = election.epoch();
                            leaderId = OptionalInt.of(election.leaderId());
                        }
                    }
                });
            }
        }
Returns if the message should be sent to the destination.

Returns false when outbound request messages contains a destination {@code Node} that
matches the set of unreachable {@code InetSocketAddress}. Note that the {@code Node.id()}
and {@code Node.rack()} are not compared.

@param message the raft message
@return true if the message should be delivered, otherwise false
raft/src/test/java/org/apache/kafka/raft/RaftEventSimulationTest.java