private static Address handleMissingProposer(
      final Address prevBlockProposer,
      final Collection<Address> validatorsForRound,
      final ConsensusRoundIdentifier roundIdentifier) {
    final NavigableSet<Address> validatorSet = new TreeSet<>(validatorsForRound);
    final NavigableSet<Address> latterValidators = validatorSet.tailSet(prevBlockProposer, false);
    final Address nextProposer;
    if (latterValidators.isEmpty()) {
      // i.e. prevBlockProposer was at the end of the validator list, so the right validator for
      // the start of this round is the first.
      nextProposer = validatorSet.first();
    } else {
      // Else, use the first validator after the dropped entry.
      nextProposer = latterValidators.first();
    }
    return calculateRoundSpecificValidator(
        nextProposer, validatorsForRound, roundIdentifier.getRoundNumber());
  }
If the proposer of the previous block is missing, the validator with an Address above the
previous will become the next validator for the first round of the next block.

<p>And validators will change from there.
consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/blockcreation/BftProposerSelector.java