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

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

    if (other.getUserName() == null ^ this.getUserName() == null) return false;
    if (other.getUserName() != null && other.getUserName().equals(this.getUserName()) == false)
      return false;
    return true;
  }
  public Request<CreateAccessKeyRequest> marshall(CreateAccessKeyRequest createAccessKeyRequest) {

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

    Request<CreateAccessKeyRequest> request =
        new DefaultRequest<CreateAccessKeyRequest>(
            createAccessKeyRequest, "AmazonIdentityManagement");
    request.addParameter("Action", "CreateAccessKey");
    request.addParameter("Version", "2010-05-08");

    if (createAccessKeyRequest.getUserName() != null) {
      request.addParameter(
          "UserName", StringUtils.fromString(createAccessKeyRequest.getUserName()));
    }

    return request;
  }