/** Marshall the given parameter object, and output to a SdkJsonGenerator */
  public void marshall(TransferData transferData, StructuredJsonGenerator jsonGenerator) {

    if (transferData == null) {
      throw new AmazonClientException("Invalid argument passed to marshall(...)");
    }

    try {
      jsonGenerator.writeStartObject();

      if (transferData.getTransferMessage() != null) {
        jsonGenerator
            .writeFieldName("transferMessage")
            .writeValue(transferData.getTransferMessage());
      }
      if (transferData.getRejectReason() != null) {
        jsonGenerator.writeFieldName("rejectReason").writeValue(transferData.getRejectReason());
      }
      if (transferData.getTransferDate() != null) {
        jsonGenerator.writeFieldName("transferDate").writeValue(transferData.getTransferDate());
      }
      if (transferData.getAcceptDate() != null) {
        jsonGenerator.writeFieldName("acceptDate").writeValue(transferData.getAcceptDate());
      }
      if (transferData.getRejectDate() != null) {
        jsonGenerator.writeFieldName("rejectDate").writeValue(transferData.getRejectDate());
      }

      jsonGenerator.writeEndObject();
    } catch (Throwable t) {
      throw new AmazonClientException("Unable to marshall request to JSON: " + t.getMessage(), t);
    }
  }