@Override
  public boolean equals(Object obj) {
    if (this == obj) return true;
    if (obj == null) return false;

    if (obj instanceof ByteMatchSetUpdate == false) return false;
    ByteMatchSetUpdate other = (ByteMatchSetUpdate) obj;
    if (other.getAction() == null ^ this.getAction() == null) return false;
    if (other.getAction() != null && other.getAction().equals(this.getAction()) == false)
      return false;
    if (other.getByteMatchTuple() == null ^ this.getByteMatchTuple() == null) return false;
    if (other.getByteMatchTuple() != null
        && other.getByteMatchTuple().equals(this.getByteMatchTuple()) == false) return false;
    return true;
  }
  /** Marshall the given parameter object, and output to a SdkJsonGenerator */
  public void marshall(
      ByteMatchSetUpdate byteMatchSetUpdate, StructuredJsonGenerator jsonGenerator) {

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

    try {
      jsonGenerator.writeStartObject();

      if (byteMatchSetUpdate.getAction() != null) {
        jsonGenerator.writeFieldName("Action").writeValue(byteMatchSetUpdate.getAction());
      }
      if (byteMatchSetUpdate.getByteMatchTuple() != null) {
        jsonGenerator.writeFieldName("ByteMatchTuple");
        ByteMatchTupleJsonMarshaller.getInstance()
            .marshall(byteMatchSetUpdate.getByteMatchTuple(), jsonGenerator);
      }

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