/// <summary>
        ///     Returns true if AuthenticationMessage instances are equal
        /// </summary>
        /// <param name="other">Instance of AuthenticationMessage to be compared</param>
        /// <returns>Boolean</returns>
        public bool Equals(AuthenticationMessage other)
        {
            // credit: http://stackoverflow.com/a/10454552/677735
            if (other == null)
            {
                return(false);
            }

            return((Op == other.Op || Op != null && Op.Equals(other.Op)) &&
                   (Id == other.Id || Id != null && Id.Equals(other.Id)) &&
                   (Session == other.Session || Session != null && Session.Equals(other.Session)) &&
                   (AppKey == other.AppKey || AppKey != null && AppKey.Equals(other.AppKey)));
        }