@Override
        public void verify() {
            for (Map.Entry<Integer, PersistentState> nodeStateEntry : cluster.nodes.entrySet()) {
                Integer nodeId = nodeStateEntry.getKey();
                PersistentState state = nodeStateEntry.getValue();
                Integer oldEpoch = nodeEpochs.get(nodeId);

                Optional<ElectionState> electionState = state.store.readElectionState();
                if (!electionState.isPresent()) {
                    continue;
                }

                int newEpoch = electionState.get().epoch();
                if (oldEpoch > newEpoch) {
                    fail("Non-monotonic update of epoch detected on node " + nodeId + ": " +
                            oldEpoch + " -> " + newEpoch);
                }
                cluster.ifRunning(nodeId, nodeState ->
                    assertEquals(newEpoch, nodeState.client.quorum().epoch())
                );
                nodeEpochs.put(nodeId, newEpoch);
            }
        }
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