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

    if (obj instanceof AssociateRouteTableRequest == false) return false;
    AssociateRouteTableRequest other = (AssociateRouteTableRequest) obj;
    if (other.getSubnetId() == null ^ this.getSubnetId() == null) return false;
    if (other.getSubnetId() != null && other.getSubnetId().equals(this.getSubnetId()) == false)
      return false;
    if (other.getRouteTableId() == null ^ this.getRouteTableId() == null) return false;
    if (other.getRouteTableId() != null
        && other.getRouteTableId().equals(this.getRouteTableId()) == false) return false;
    return true;
  }
  public Request<AssociateRouteTableRequest> marshall(
      AssociateRouteTableRequest associateRouteTableRequest) {

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

    Request<AssociateRouteTableRequest> request =
        new DefaultRequest<AssociateRouteTableRequest>(associateRouteTableRequest, "AmazonEC2");
    request.addParameter("Action", "AssociateRouteTable");
    request.addParameter("Version", "2012-08-15");

    if (associateRouteTableRequest.getSubnetId() != null) {
      request.addParameter(
          "SubnetId", StringUtils.fromString(associateRouteTableRequest.getSubnetId()));
    }
    if (associateRouteTableRequest.getRouteTableId() != null) {
      request.addParameter(
          "RouteTableId", StringUtils.fromString(associateRouteTableRequest.getRouteTableId()));
    }

    return request;
  }