private static PropagatedBlockContext blockPropagatedContext(
      final Supplier<BlockHeader> blockHeaderSupplier,
      final Supplier<BlockBody> blockBodySupplier,
      final Supplier<Difficulty> totalDifficultySupplier) {
    return new PropagatedBlockContext() {
      @Override
      public BlockHeader getBlockHeader() {
        return blockHeaderSupplier.get();
      }

      @Override
      public BlockBody getBlockBody() {
        return blockBodySupplier.get();
      }

      @Override
      public UInt256 getTotalDifficulty() {
        return totalDifficultySupplier.get().toUInt256();
      }
    };
  }
Constructor for BesuEventsImpl

@param blockchain An instance of Blockchain
@param blockBroadcaster An instance of BlockBroadcaster
@param transactionPool An instance of TransactionPool
@param syncState An instance of SyncState
@param badBlockManager A cache of bad blocks encountered on the network
app/src/main/java/org/hyperledger/besu/services/BesuEventsImpl.java