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

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

    try {
      jsonGenerator.writeStartObject();

      if (iPSet.getIPSetId() != null) {
        jsonGenerator.writeFieldName("IPSetId").writeValue(iPSet.getIPSetId());
      }
      if (iPSet.getName() != null) {
        jsonGenerator.writeFieldName("Name").writeValue(iPSet.getName());
      }

      java.util.List<IPSetDescriptor> iPSetDescriptorsList = iPSet.getIPSetDescriptors();
      if (iPSetDescriptorsList != null) {
        jsonGenerator.writeFieldName("IPSetDescriptors");
        jsonGenerator.writeStartArray();
        for (IPSetDescriptor iPSetDescriptorsListValue : iPSetDescriptorsList) {
          if (iPSetDescriptorsListValue != null) {

            IPSetDescriptorJsonMarshaller.getInstance()
                .marshall(iPSetDescriptorsListValue, jsonGenerator);
          }
        }
        jsonGenerator.writeEndArray();
      }

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