docs: @Nonnull
    @SuppressFBWarnings ("RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE")
    public EChange registerState (@Nonnull @Nonempty final String sStateID, @Nonnull final IHasUIState aNewState)
    {
      ValueEnforcer.notEmpty (sStateID, "StateID");
      ValueEnforcer.notNull (aNewState, "NewState");
  
      final ObjectType aOT = aNewState.getObjectType ();
      if (aOT == null)
        throw new IllegalStateException ("Object has no typeID: " + aNewState);
  
      return m_aRWLock.writeLocked ( () -> {
        final Map <String, IHasUIState> aMap = m_aMap.computeIfAbsent (aOT, k -> new CommonsHashMap<> ());
  
        if (LOGGER.isDebugEnabled () && aMap.containsKey (sStateID))
          LOGGER.debug ("Overwriting " + aOT.getName () + " with ID " + sStateID + " with new object");
  
        aMap.put (sStateID, aNewState);
        return EChange.CHANGED;
      });
    }