/// <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 (HandlerName != null)
         {
             hashCode = hashCode * 59 + HandlerName.GetHashCode();
         }
         if (UserExpirationTime != null)
         {
             hashCode = hashCode * 59 + UserExpirationTime.GetHashCode();
         }
         if (UserAutoMembership != null)
         {
             hashCode = hashCode * 59 + UserAutoMembership.GetHashCode();
         }
         if (UserPropertyMapping != null)
         {
             hashCode = hashCode * 59 + UserPropertyMapping.GetHashCode();
         }
         if (UserPathPrefix != null)
         {
             hashCode = hashCode * 59 + UserPathPrefix.GetHashCode();
         }
         if (UserMembershipExpTime != null)
         {
             hashCode = hashCode * 59 + UserMembershipExpTime.GetHashCode();
         }
         if (UserMembershipNestingDepth != null)
         {
             hashCode = hashCode * 59 + UserMembershipNestingDepth.GetHashCode();
         }
         if (UserDynamicMembership != null)
         {
             hashCode = hashCode * 59 + UserDynamicMembership.GetHashCode();
         }
         if (UserDisableMissing != null)
         {
             hashCode = hashCode * 59 + UserDisableMissing.GetHashCode();
         }
         if (GroupExpirationTime != null)
         {
             hashCode = hashCode * 59 + GroupExpirationTime.GetHashCode();
         }
         if (GroupAutoMembership != null)
         {
             hashCode = hashCode * 59 + GroupAutoMembership.GetHashCode();
         }
         if (GroupPropertyMapping != null)
         {
             hashCode = hashCode * 59 + GroupPropertyMapping.GetHashCode();
         }
         if (GroupPathPrefix != null)
         {
             hashCode = hashCode * 59 + GroupPathPrefix.GetHashCode();
         }
         if (EnableRFC7613UsercaseMappedProfile != null)
         {
             hashCode = hashCode * 59 + EnableRFC7613UsercaseMappedProfile.GetHashCode();
         }
         return(hashCode);
     }
 }
        /// <summary>
        /// Returns true if OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties instances are equal
        /// </summary>
        /// <param name="other">Instance of OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties to be compared</param>
        /// <returns>Boolean</returns>
        public bool Equals(OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties other)
        {
            if (other is null)
            {
                return(false);
            }
            if (ReferenceEquals(this, other))
            {
                return(true);
            }

            return
                ((
                     HandlerName == other.HandlerName ||
                     HandlerName != null &&
                     HandlerName.Equals(other.HandlerName)
                     ) &&
                 (
                     UserExpirationTime == other.UserExpirationTime ||
                     UserExpirationTime != null &&
                     UserExpirationTime.Equals(other.UserExpirationTime)
                 ) &&
                 (
                     UserAutoMembership == other.UserAutoMembership ||
                     UserAutoMembership != null &&
                     UserAutoMembership.Equals(other.UserAutoMembership)
                 ) &&
                 (
                     UserPropertyMapping == other.UserPropertyMapping ||
                     UserPropertyMapping != null &&
                     UserPropertyMapping.Equals(other.UserPropertyMapping)
                 ) &&
                 (
                     UserPathPrefix == other.UserPathPrefix ||
                     UserPathPrefix != null &&
                     UserPathPrefix.Equals(other.UserPathPrefix)
                 ) &&
                 (
                     UserMembershipExpTime == other.UserMembershipExpTime ||
                     UserMembershipExpTime != null &&
                     UserMembershipExpTime.Equals(other.UserMembershipExpTime)
                 ) &&
                 (
                     UserMembershipNestingDepth == other.UserMembershipNestingDepth ||
                     UserMembershipNestingDepth != null &&
                     UserMembershipNestingDepth.Equals(other.UserMembershipNestingDepth)
                 ) &&
                 (
                     UserDynamicMembership == other.UserDynamicMembership ||
                     UserDynamicMembership != null &&
                     UserDynamicMembership.Equals(other.UserDynamicMembership)
                 ) &&
                 (
                     UserDisableMissing == other.UserDisableMissing ||
                     UserDisableMissing != null &&
                     UserDisableMissing.Equals(other.UserDisableMissing)
                 ) &&
                 (
                     GroupExpirationTime == other.GroupExpirationTime ||
                     GroupExpirationTime != null &&
                     GroupExpirationTime.Equals(other.GroupExpirationTime)
                 ) &&
                 (
                     GroupAutoMembership == other.GroupAutoMembership ||
                     GroupAutoMembership != null &&
                     GroupAutoMembership.Equals(other.GroupAutoMembership)
                 ) &&
                 (
                     GroupPropertyMapping == other.GroupPropertyMapping ||
                     GroupPropertyMapping != null &&
                     GroupPropertyMapping.Equals(other.GroupPropertyMapping)
                 ) &&
                 (
                     GroupPathPrefix == other.GroupPathPrefix ||
                     GroupPathPrefix != null &&
                     GroupPathPrefix.Equals(other.GroupPathPrefix)
                 ) &&
                 (
                     EnableRFC7613UsercaseMappedProfile == other.EnableRFC7613UsercaseMappedProfile ||
                     EnableRFC7613UsercaseMappedProfile != null &&
                     EnableRFC7613UsercaseMappedProfile.Equals(other.EnableRFC7613UsercaseMappedProfile)
                 ));
        }