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

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

    try {
      jsonGenerator.writeStartObject();

      if (devicePoolCompatibilityResult.getDevice() != null) {
        jsonGenerator.writeFieldName("device");
        DeviceJsonMarshaller.getInstance()
            .marshall(devicePoolCompatibilityResult.getDevice(), jsonGenerator);
      }
      if (devicePoolCompatibilityResult.getCompatible() != null) {
        jsonGenerator
            .writeFieldName("compatible")
            .writeValue(devicePoolCompatibilityResult.getCompatible());
      }

      java.util.List<IncompatibilityMessage> incompatibilityMessagesList =
          devicePoolCompatibilityResult.getIncompatibilityMessages();
      if (incompatibilityMessagesList != null) {
        jsonGenerator.writeFieldName("incompatibilityMessages");
        jsonGenerator.writeStartArray();
        for (IncompatibilityMessage incompatibilityMessagesListValue :
            incompatibilityMessagesList) {
          if (incompatibilityMessagesListValue != null) {

            IncompatibilityMessageJsonMarshaller.getInstance()
                .marshall(incompatibilityMessagesListValue, jsonGenerator);
          }
        }
        jsonGenerator.writeEndArray();
      }

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