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

    if (obj instanceof PutRecordRequest == false) return false;
    PutRecordRequest other = (PutRecordRequest) obj;
    if (other.getStreamName() == null ^ this.getStreamName() == null) return false;
    if (other.getStreamName() != null
        && other.getStreamName().equals(this.getStreamName()) == false) return false;
    if (other.getData() == null ^ this.getData() == null) return false;
    if (other.getData() != null && other.getData().equals(this.getData()) == false) return false;
    if (other.getPartitionKey() == null ^ this.getPartitionKey() == null) return false;
    if (other.getPartitionKey() != null
        && other.getPartitionKey().equals(this.getPartitionKey()) == false) return false;
    if (other.getExplicitHashKey() == null ^ this.getExplicitHashKey() == null) return false;
    if (other.getExplicitHashKey() != null
        && other.getExplicitHashKey().equals(this.getExplicitHashKey()) == false) return false;
    if (other.getSequenceNumberForOrdering() == null ^ this.getSequenceNumberForOrdering() == null)
      return false;
    if (other.getSequenceNumberForOrdering() != null
        && other.getSequenceNumberForOrdering().equals(this.getSequenceNumberForOrdering())
            == false) return false;
    return true;
  }