@Test
  public void fullyPopulatedDataIsEncodedAndDecodedCorrectly() {
    final List<Address> validators =
        Arrays.asList(Address.fromHexString("1"), Address.fromHexString("2"));
    final Optional<Vote> vote = Optional.of(Vote.authVote(Address.fromHexString("1")));
    final int round = 0x00FEDCBA;
    final List<SECPSignature> committerSeals =
        Arrays.asList(
            SIGNATURE_ALGORITHM.get().createSignature(BigInteger.ONE, BigInteger.TEN, (byte) 0),
            SIGNATURE_ALGORITHM.get().createSignature(BigInteger.TEN, BigInteger.ONE, (byte) 0));

    // Create a byte buffer with no data.
    final byte[] vanity_bytes = createNonEmptyVanityData();
    final Bytes vanity_data = Bytes.wrap(vanity_bytes);

    BftExtraData expectedExtraData =
        new BftExtraData(vanity_data, committerSeals, vote, round, validators);
    final IbftExtraDataCodec ibftExtraDataEncoder = bftExtraDataEncoder;

    final BftExtraData actualExtraData =
        ibftExtraDataEncoder.decodeRaw(ibftExtraDataEncoder.encode(expectedExtraData));

    assertThat(actualExtraData).isEqualToComparingFieldByField(expectedExtraData);
  }
This test specifically verifies that {@link IbftExtraDataCodec#decode(BlockHeader)} uses {@link
RLPInput#readInt()} rather than {@link RLPInput#readIntScalar()} to decode the round number
consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/IbftExtraDataRLPEncoderTest.java