# .nick by definition same, check other fields for updatability;
             # allow where '?', or for set .user only to add "~" prefix, assert
             # nothing else could have changed
+            if stored.user == '?' or nickuserhost.user == f'~{stored.user}':
+                assert updating
+                stored.user = nickuserhost.user
+            else:
+                assert stored.user == nickuserhost.user
             if stored.host == '?':
                 assert updating
                 stored.host = nickuserhost.host
-                if stored.user == '?':
-                    stored.user = nickuserhost.user
-                else:
-                    assert nickuserhost.user == stored.user
-            elif nickuserhost.user == f'~{stored.user}':
-                assert updating
+            else:
                 assert stored.host == nickuserhost.host
-                stored.user = nickuserhost.user
-            else:  # not seen set .host with unset .user yet
-                assert stored.user != '?'
         elif create_if_none:
             id_ = str(uuid4())
             self[id_].nickuserhost = nickuserhost