@ParameterizedTest
  @ValueSource(
      strings = {
        "0x01",
        "0x02",
        "0x3d813a0ffc9cd04436e17e3e9c309f1e80df0407078e50355ce0d570b5424812",
        "0x4e9a67b663f9abe03e7e9fd5452c9497998337077122f44ee78a466f6a7358de"
      })
  public void assertOnlyChainHeadMoves(final String blockParam) {
    var chainTip = blockchain.getChainHead().getBlockHeader();
    var blockOne = getBlockHeaderForHashOrNumber(blockParam).orElse(null);

    assertThat(blockOne).isNotNull();
    assertThat(blockOne).isNotEqualTo(chainTip);

    // move the head to param val, number or hash
    debugSetHead.response(debugSetHead(blockParam, Optional.of(FALSE)));

    // get the new chainTip:
    var newChainTip = blockchain.getChainHead().getBlockHeader();

    // assert the chain moved, and the worldstate did not
    assertThat(newChainTip).isEqualTo(blockOne);
    assertThat(archive.getWorldState().rootHash()).isEqualTo(chainTip.getStateRoot());
  }
This test only exercises bonsai worldstate since forest is essentially a no-op for moving the
worldstate.
ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/DebugSetHeadTest.java