private static List<BlockStateCall> generateIntermediateBlocks(
      final long targetBlockNumber, final long startBlockNumber, final long startTimestamp) {
    List<BlockStateCall> intermediateBlocks = new ArrayList<>();
    long blockNumberDiff = targetBlockNumber - startBlockNumber;
    for (int i = 1; i < blockNumberDiff; i++) {
      long nextBlockNumber = startBlockNumber + i;
      long nextTimestamp = startTimestamp + TIMESTAMP_INCREMENT * i;
      var nextBlockOverrides =
          BlockOverrides.builder().blockNumber(nextBlockNumber).timestamp(nextTimestamp).build();
      intermediateBlocks.add(new BlockStateCall(nextBlockOverrides));
    }
    return intermediateBlocks;
  }
Normalizes a list of BlockStateCalls by filling gaps and setting the correct block number and
timestamp.

@param blockStateCalls the list of BlockStateCalls to normalize
@param header the initial block header
@return a normalized list of BlockStateCalls
ethereum/core/src/main/java/org/hyperledger/besu/ethereum/transaction/BlockStateCalls.java