@Override
  public CliqueBlockMiner createMiner(
      final Subscribers<MinedBlockObserver> observers,
      final Subscribers<PoWObserver> ethHashObservers,
      final BlockHeader parentHeader) {
    final Function<BlockHeader, CliqueBlockCreator> blockCreator =
        (header) ->
            new CliqueBlockCreator(
                miningConfiguration,
                this::calculateExtraData,
                transactionPool,
                protocolContext,
                protocolSchedule,
                nodeKey,
                epochManager,
                ethScheduler);

    return new CliqueBlockMiner(
        blockCreator,
        protocolSchedule,
        protocolContext,
        observers,
        blockScheduler,
        parentHeader,
        localAddress,
        forksSchedule);
  }
Instantiates a new Clique miner executor.

@param protocolContext the protocol context
@param protocolSchedule the protocol schedule
@param transactionPool the pending transactions
@param nodeKey the node key
@param miningParams the mining params
@param blockScheduler the block scheduler
@param epochManager the epoch manager
@param forksSchedule the clique transitions
@param ethScheduler the scheduler for asynchronous block creation tasks
consensus/clique/src/main/java/org/hyperledger/besu/consensus/clique/blockcreation/CliqueMinerExecutor.java