/// <summary>
 /// Gets the hash code
 /// </summary>
 /// <returns>Hash code</returns>
 public override int GetHashCode()
 {
     unchecked // Overflow is fine, just wrap
     {
         var hashCode = 41;
         // Suitable nullity checks etc, of course :)
         if (Iss != null)
         {
             hashCode = hashCode * 59 + Iss.GetHashCode();
         }
         if (Sub != null)
         {
             hashCode = hashCode * 59 + Sub.GetHashCode();
         }
         if (Aud != null)
         {
             hashCode = hashCode * 59 + Aud.GetHashCode();
         }
         if (Exp != null)
         {
             hashCode = hashCode * 59 + Exp.GetHashCode();
         }
         if (Nbf != null)
         {
             hashCode = hashCode * 59 + Nbf.GetHashCode();
         }
         if (Iat != null)
         {
             hashCode = hashCode * 59 + Iat.GetHashCode();
         }
         if (Jti != null)
         {
             hashCode = hashCode * 59 + Jti.GetHashCode();
         }
         if (Uuid != null)
         {
             hashCode = hashCode * 59 + Uuid.GetHashCode();
         }
         if (Name != null)
         {
             hashCode = hashCode * 59 + Name.GetHashCode();
         }
         if (GivenName != null)
         {
             hashCode = hashCode * 59 + GivenName.GetHashCode();
         }
         if (Nickname != null)
         {
             hashCode = hashCode * 59 + Nickname.GetHashCode();
         }
         if (Email != null)
         {
             hashCode = hashCode * 59 + Email.GetHashCode();
         }
         if (EmailVerified != null)
         {
             hashCode = hashCode * 59 + EmailVerified.GetHashCode();
         }
         if (Zoneinfo != null)
         {
             hashCode = hashCode * 59 + Zoneinfo.GetHashCode();
         }
         if (Locale != null)
         {
             hashCode = hashCode * 59 + Locale.GetHashCode();
         }
         if (Cnf != null)
         {
             hashCode = hashCode * 59 + Cnf.GetHashCode();
         }
         if (Orig != null)
         {
             hashCode = hashCode * 59 + Orig.GetHashCode();
         }
         if (Dest != null)
         {
             hashCode = hashCode * 59 + Dest.GetHashCode();
         }
         if (Mky != null)
         {
             hashCode = hashCode * 59 + Mky.GetHashCode();
         }
         return(hashCode);
     }
 }
        /// <summary>
        /// Returns true if JWToken instances are equal
        /// </summary>
        /// <param name="other">Instance of JWToken to be compared</param>
        /// <returns>Boolean</returns>
        public bool Equals(JWToken other)
        {
            if (ReferenceEquals(null, other))
            {
                return(false);
            }
            if (ReferenceEquals(this, other))
            {
                return(true);
            }

            return
                ((
                     Iss == other.Iss ||
                     Iss != null &&
                     Iss.Equals(other.Iss)
                     ) &&
                 (
                     Sub == other.Sub ||
                     Sub != null &&
                     Sub.Equals(other.Sub)
                 ) &&
                 (
                     Aud == other.Aud ||
                     Aud != null &&
                     Aud.Equals(other.Aud)
                 ) &&
                 (
                     Exp == other.Exp ||
                     Exp != null &&
                     Exp.Equals(other.Exp)
                 ) &&
                 (
                     Nbf == other.Nbf ||
                     Nbf != null &&
                     Nbf.Equals(other.Nbf)
                 ) &&
                 (
                     Iat == other.Iat ||
                     Iat != null &&
                     Iat.Equals(other.Iat)
                 ) &&
                 (
                     Jti == other.Jti ||
                     Jti != null &&
                     Jti.Equals(other.Jti)
                 ) &&
                 (
                     Uuid == other.Uuid ||
                     Uuid != null &&
                     Uuid.Equals(other.Uuid)
                 ) &&
                 (
                     Name == other.Name ||
                     Name != null &&
                     Name.Equals(other.Name)
                 ) &&
                 (
                     GivenName == other.GivenName ||
                     GivenName != null &&
                     GivenName.Equals(other.GivenName)
                 ) &&
                 (
                     Nickname == other.Nickname ||
                     Nickname != null &&
                     Nickname.Equals(other.Nickname)
                 ) &&
                 (
                     Email == other.Email ||
                     Email != null &&
                     Email.Equals(other.Email)
                 ) &&
                 (
                     EmailVerified == other.EmailVerified ||
                     EmailVerified != null &&
                     EmailVerified.Equals(other.EmailVerified)
                 ) &&
                 (
                     Zoneinfo == other.Zoneinfo ||
                     Zoneinfo != null &&
                     Zoneinfo.Equals(other.Zoneinfo)
                 ) &&
                 (
                     Locale == other.Locale ||
                     Locale != null &&
                     Locale.Equals(other.Locale)
                 ) &&
                 (
                     Cnf == other.Cnf ||
                     Cnf != null &&
                     Cnf.Equals(other.Cnf)
                 ) &&
                 (
                     Orig == other.Orig ||
                     Orig != null &&
                     Orig.Equals(other.Orig)
                 ) &&
                 (
                     Dest == other.Dest ||
                     Dest != null &&
                     Dest.Equals(other.Dest)
                 ) &&
                 (
                     Mky == other.Mky ||
                     Mky != null &&
                     Mky.Equals(other.Mky)
                 ));
        }