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

    if (obj instanceof ListCertificatesRequest == false) return false;
    ListCertificatesRequest other = (ListCertificatesRequest) obj;
    if (other.getPageSize() == null ^ this.getPageSize() == null) return false;
    if (other.getPageSize() != null && other.getPageSize().equals(this.getPageSize()) == false)
      return false;
    if (other.getMarker() == null ^ this.getMarker() == null) return false;
    if (other.getMarker() != null && other.getMarker().equals(this.getMarker()) == false)
      return false;
    if (other.getAscendingOrder() == null ^ this.getAscendingOrder() == null) return false;
    if (other.getAscendingOrder() != null
        && other.getAscendingOrder().equals(this.getAscendingOrder()) == false) return false;
    return true;
  }
  public Request<ListCertificatesRequest> marshall(
      ListCertificatesRequest listCertificatesRequest) {

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

    Request<ListCertificatesRequest> request =
        new DefaultRequest<ListCertificatesRequest>(listCertificatesRequest, "AWSIot");

    request.setHttpMethod(HttpMethodName.GET);

    String uriResourcePath = "/certificates";

    request.setResourcePath(uriResourcePath);

    if (listCertificatesRequest.getPageSize() != null) {
      request.addParameter(
          "pageSize", StringUtils.fromInteger(listCertificatesRequest.getPageSize()));
    }

    if (listCertificatesRequest.getMarker() != null) {
      request.addParameter("marker", StringUtils.fromString(listCertificatesRequest.getMarker()));
    }

    if (listCertificatesRequest.getAscendingOrder() != null) {
      request.addParameter(
          "isAscendingOrder", StringUtils.fromBoolean(listCertificatesRequest.getAscendingOrder()));
    }

    request.setContent(new ByteArrayInputStream(new byte[0]));
    if (!request.getHeaders().containsKey("Content-Type")) {
      request.addHeader("Content-Type", DEFAULT_CONTENT_TYPE);
    }

    return request;
  }