@Value.Check
  protected void check() {
    if (getInput().isPresent() && getData().isPresent() && !getInput().equals(getData())) {
      throw new IllegalArgumentException("Only one of 'input' or 'data' should be provided");
    }
  }
'data' is mutually exclusive with 'input', so it needs special handling. This method is only
used to deserialize the 'data' field, always use getPayload() to get the value.
ethereum/core/src/main/java/org/hyperledger/besu/ethereum/transaction/CallParameter.java