public boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (obj instanceof Document == false)return false;Document other = (Document) obj;if (other.getBytes() == null ^ this.getBytes() == null)return false;if (other.getBytes() != null && other.getBytes().equals(this.getBytes()) == false)return false;if (other.getS3Object() == null ^ this.getS3Object() == null)return false;if (other.getS3Object() != null && other.getS3Object().equals(this.getS3Object()) == false)return false;return true;}

public override bool Equals(object obj){var otherDocument = obj as Document;if (otherDocument == null)return false;if (Keys.Count != otherDocument.Keys.Count)return false;foreach(var key in Keys){if (!otherDocument.ContainsKey(key))return false;var a = this[key];var b = otherDocument[key];if (!a.Equals(b))return false;}return true;}
