docs: public void updateGroupPermission(int iGroupID)
      {
          if (m_recUserPermission == null)
              m_recUserPermission = new UserPermission(this.getOwner().findRecordOwner());
          Record m_recUserGroup = ((ReferenceField)m_recUserPermission.getField(UserPermission.USER_GROUP_ID)).getReferenceRecord();
          m_recUserGroup.setOpenMode(m_recUserGroup.getOpenMode() & ~DBConstants.OPEN_READ_ONLY); // Read and write
          if (m_recUserPermission.getListener(SubFileFilter.class) == null)
              m_recUserPermission.addListener(new SubFileFilter(m_recUserGroup));
          try {
              m_recUserGroup.addNew();
              m_recUserGroup.getCounterField().setValue(iGroupID);
              if (m_recUserGroup.seek(null))
              {
                  m_recUserGroup.edit();
                  
                  StringBuffer sb = new StringBuffer();
                  m_recUserPermission.close();
                  while (m_recUserPermission.hasNext())
                  {
                      m_recUserPermission.next();
                      
                      Record recUserResource = ((ReferenceField)m_recUserPermission.getField(UserPermission.USER_RESOURCE_ID)).getReference();
                      String strResource = recUserResource.getField(UserResource.RESOURCE_CLASS).toString();
                      StringTokenizer tokenizer = new StringTokenizer(strResource, "\n\t ,");
                      while (tokenizer.hasMoreTokens())
                      {
                          String strClass = tokenizer.nextToken();
                          int startThin = strClass.indexOf(Constants.THIN_SUBPACKAGE, 0);
                          if (startThin != -1)    // Remove the ".thin" reference
                              strClass = strClass.substring(0, startThin) + strClass.substring(startThin + Constants.THIN_SUBPACKAGE.length());
                          if (strClass.length() > 0)
                          {
                              sb.append(strClass).append('\t');
                              sb.append(m_recUserPermission.getField(UserPermission.ACCESS_LEVEL).toString()).append('\t');
                              sb.append(m_recUserPermission.getField(UserPermission.LOGIN_LEVEL).toString()).append("\t\n");
                          }
                      }
                  }
                  
                  m_recUserGroup.getField(UserGroup.ACCESS_MAP).setString(sb.toString());
                  m_recUserGroup.set();
              }
          } catch (DBException e) {
              e.printStackTrace();
          }
      }