private long createForkIds() {
    final CRC32 crc = new CRC32();
    crc.update(genesisHash.toArray());
    genesisHashCrc = getCurrentCrcHash(crc);
    final List<Bytes> forkHashes = new ArrayList<>(List.of(genesisHashCrc));
    blockNumberForks.forEach(
        fork -> {
          updateCrc(crc, fork);
          forkHashes.add(getCurrentCrcHash(crc));
        });

    timestampForks.forEach(
        fork -> {
          updateCrc(crc, fork);
          forkHashes.add(getCurrentCrcHash(crc));
        });

    // This loop is for all the fork hashes that have an associated "next fork"
    for (int i = 0; i < blockNumberForks.size(); i++) {
      blockNumbersForkIds.add(new ForkId(forkHashes.get(i), blockNumberForks.get(i)));
    }
    for (int i = 0; i < timestampForks.size(); i++) {
      timestampsForkIds.add(
          new ForkId(forkHashes.get(blockNumberForks.size() + i), timestampForks.get(i)));
    }
    long forkNext = 0;
    if (!timestampForks.isEmpty()) {
      forkNext = timestampForks.get(timestampForks.size() - 1);
      timestampsForkIds.add(new ForkId(forkHashes.get(forkHashes.size() - 1), 0));
    } else if (!blockNumberForks.isEmpty()) {
      forkNext = blockNumbersForkIds.get(blockNumbersForkIds.size() - 1).getNext();
      blockNumbersForkIds.add(new ForkId(forkHashes.get(forkHashes.size() - 1), 0));
    }
    return forkNext;
  }
Non EIP-2124 behaviour

@param peerGenesisHash Hash to be validated.
@return boolean
ethereum/core/src/main/java/org/hyperledger/besu/ethereum/forkid/ForkIdManager.java