private static void add(
      final List<BlockStateCall> blockStateCalls,
      final BlockStateCall blockStateCall,
      final long currentBlockNumber,
      final long currentTimestamp) {
    long blockNumber = blockStateCall.getBlockOverrides().getBlockNumber().orElseThrow();
    long timestamp = blockStateCall.getBlockOverrides().getTimestamp().orElseThrow();
    if (blockNumber <= currentBlockNumber) {
      throw new IllegalArgumentException(
          String.format(
              "Block number is invalid. Trying to add a call at block number %s, while current block number is %s.",
              blockNumber, currentBlockNumber));
    }
    if (timestamp <= currentTimestamp) {
      throw new IllegalArgumentException(
          String.format(
              "Timestamp is invalid. Trying to add a call at timestamp %s, while current timestamp is %s.",
              timestamp, currentTimestamp));
    }
    blockStateCalls.add(blockStateCall);
  }
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