/// <inheritdoc/>
 public override bool Equals(object obj)
 {
     if (!(obj is BaseNodeModel model))
     {
         return(false);
     }
     if (!Handle.EqualsSafe(model.Handle))
     {
         return(false);
     }
     if (SymbolicName != model.SymbolicName)
     {
         return(false);
     }
     if (!Utils.IsEqual(NodeId, model.NodeId))
     {
         return(false);
     }
     if (NodeClass != model.NodeClass)
     {
         return(false);
     }
     if (!Utils.IsEqual(BrowseName, model.BrowseName))
     {
         return(false);
     }
     if (!Utils.IsEqual(DisplayName, model.DisplayName))
     {
         return(false);
     }
     if (!Utils.IsEqual(Description, model.Description))
     {
         return(false);
     }
     if (WriteMask != model.WriteMask)
     {
         return(false);
     }
     if (UserWriteMask != model.UserWriteMask)
     {
         return(false);
     }
     if (AccessRestrictions != model.AccessRestrictions)
     {
         return(false);
     }
     if (RolePermissions.SetEqualsSafe(model.RolePermissions, Utils.IsEqual))
     {
         return(false);
     }
     if (UserRolePermissions.SetEqualsSafe(model.UserRolePermissions, Utils.IsEqual))
     {
         return(false);
     }
     return(true);
 }