class FuzzUtil {

  public Optional<byte[]> fuzzAttestation(final byte[] input) {
    AttestationFuzzInput structuredInput = deserialize(input, AttestationFuzzInput.class);

    // process and return post state
    try {
      BeaconState postState =
          structuredInput
              .getState()
              .updated(
                  state ->
                      BlockProcessorUtil.process_attestations(
                          state,
                          SSZList.singleton(structuredInput.getAttestation()),
                          IndexedAttestationProvider.DIRECT_PROVIDER));
      Bytes output = SimpleOffsetSerializer.serialize(postState);
      return Optional.of(output.toArrayUnsafe());
    } catch (BlockProcessingException e) {
      // "expected error"
      return Optional.empty();
    }
  }

  public  FuzzUtil(final boolean useMainnetConfig, final boolean disable_bls);

}