docs: protected void submit() {
  
          if (m_userinfoNoEditGroup.getRows().size() != m_addInfoReadOnly.size()) {
              List<String> currentKeys = getKeyListFromGroup(m_userinfoNoEditGroup);
              for (String key : m_addInfoReadOnly.keySet()) {
                  if (!currentKeys.contains(key)) {
                      saveAddInfo(key, null);
                  }
              }
          }
  
          for (I_CmsEditableGroupRow row : m_userinfoGroup.getRows()) {
              String key = ((TextField)(((HorizontalLayout)row.getComponent()).getComponent(0))).getValue();
              String value = ((TextField)(((HorizontalLayout)row.getComponent()).getComponent(1))).getValue();
              saveAddInfo(key, value);
              m_addInfoEditable.remove(key);
          }
  
          //Remaining items in list seem to be deleted by the user..
          for (String key : m_addInfoEditable.keySet()) {
              saveAddInfo(key, null);
          }
          try {
              m_cms.writeUser(m_user);
          } catch (CmsException e) {
              LOG.error("Unable to write user.", e);
          }
      }