public Request<RevokeSnapshotAccessRequest> marshall(
      RevokeSnapshotAccessRequest revokeSnapshotAccessRequest) {

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

    Request<RevokeSnapshotAccessRequest> request =
        new DefaultRequest<RevokeSnapshotAccessRequest>(
            revokeSnapshotAccessRequest, "AmazonRedshift");
    request.addParameter("Action", "RevokeSnapshotAccess");
    request.addParameter("Version", "2012-12-01");

    if (revokeSnapshotAccessRequest.getSnapshotIdentifier() != null) {
      request.addParameter(
          "SnapshotIdentifier",
          StringUtils.fromString(revokeSnapshotAccessRequest.getSnapshotIdentifier()));
    }
    if (revokeSnapshotAccessRequest.getSnapshotClusterIdentifier() != null) {
      request.addParameter(
          "SnapshotClusterIdentifier",
          StringUtils.fromString(revokeSnapshotAccessRequest.getSnapshotClusterIdentifier()));
    }
    if (revokeSnapshotAccessRequest.getAccountWithRestoreAccess() != null) {
      request.addParameter(
          "AccountWithRestoreAccess",
          StringUtils.fromString(revokeSnapshotAccessRequest.getAccountWithRestoreAccess()));
    }

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

    if (obj instanceof RevokeSnapshotAccessRequest == false) return false;
    RevokeSnapshotAccessRequest other = (RevokeSnapshotAccessRequest) obj;

    if (other.getSnapshotIdentifier() == null ^ this.getSnapshotIdentifier() == null) return false;
    if (other.getSnapshotIdentifier() != null
        && other.getSnapshotIdentifier().equals(this.getSnapshotIdentifier()) == false)
      return false;
    if (other.getSnapshotClusterIdentifier() == null ^ this.getSnapshotClusterIdentifier() == null)
      return false;
    if (other.getSnapshotClusterIdentifier() != null
        && other.getSnapshotClusterIdentifier().equals(this.getSnapshotClusterIdentifier())
            == false) return false;
    if (other.getAccountWithRestoreAccess() == null ^ this.getAccountWithRestoreAccess() == null)
      return false;
    if (other.getAccountWithRestoreAccess() != null
        && other.getAccountWithRestoreAccess().equals(this.getAccountWithRestoreAccess()) == false)
      return false;
    return true;
  }