### Question:
PollReport { public Optional<Long> getLayoutSlotUnFilled(@NonNull Layout latestCommittedLayout) { log.trace("getLayoutSlotUnFilled. Wrong epochs: {}, latest layout epoch: {}", wrongEpochs, latestCommittedLayout.getEpoch() ); long maxOutOfPhaseEpoch = wrongEpochs.values().stream() .max(Long::compare) .orElse(latestCommittedLayout.getEpoch()); if (maxOutOfPhaseEpoch > latestCommittedLayout.getEpoch()) { return Optional.of(maxOutOfPhaseEpoch); } return Optional.empty(); }  ImmutableSet<String> getAllReachableNodes(); Set<String> getReachableNodes(); Set<String> getFailedNodes(); Optional<Long> getLayoutSlotUnFilled(@NonNull Layout latestCommittedLayout); boolean areAllResponsiveServersSealed();  }### Answer:
@Test public void testIsSlotUnfilled() { final String localEndpoint = "a"; ClusterState clusterState = ClusterState.buildClusterState( localEndpoint, ImmutableList.of(), nodeState("a", epoch, OK, OK, FAILED), nodeState("b", epoch, OK, OK, FAILED), NodeState.getUnavailableNodeState("c") ); final long epoch = 1; PollReport pollReport = PollReport.builder() .pingResponsiveServers(ImmutableList.of("a", "b", "c")) .wrongEpochs(ImmutableMap.of("a", epoch, "b", epoch, "c", epoch)) .clusterState(clusterState) .elapsedTime(Duration.ZERO) .build(); Layout latestCommitted = mock(Layout.class); when(latestCommitted.getEpoch()).thenReturn(epoch - 1); assertThat(pollReport.getLayoutSlotUnFilled(latestCommitted)).isPresent(); }