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

    if (obj instanceof BootstrapActionDetail == false) return false;
    BootstrapActionDetail other = (BootstrapActionDetail) obj;
    if (other.getBootstrapActionConfig() == null ^ this.getBootstrapActionConfig() == null)
      return false;
    if (other.getBootstrapActionConfig() != null
        && other.getBootstrapActionConfig().equals(this.getBootstrapActionConfig()) == false)
      return false;
    return true;
  }
  /** Marshall the given parameter object, and output to a JSONWriter */
  public void marshall(BootstrapActionDetail bootstrapActionDetail, JSONWriter jsonWriter) {
    if (bootstrapActionDetail == null) {
      throw new AmazonClientException("Invalid argument passed to marshall(...)");
    }

    try {
      jsonWriter.object();

      if (bootstrapActionDetail.getBootstrapActionConfig() != null) {
        jsonWriter.key("BootstrapActionConfig");
        BootstrapActionConfigJsonMarshaller.getInstance()
            .marshall(bootstrapActionDetail.getBootstrapActionConfig(), jsonWriter);
      }

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