docs: public Map<String, LdapEntry> getDynamicGroups(String bases[], List<String> propNames, boolean getMbrshipAttr) throws WIMException {
          Map<String, LdapEntry> dynaGrps = new HashMap<String, LdapEntry>();
          String[] attrIds = iLdapConfigMgr.getAttributeNames(iLdapConfigMgr.getGroupTypes(), propNames, getMbrshipAttr, false);
          String[] dynaMbrAttrNames = iLdapConfigMgr.getDynamicMemberAttributes();
          String[] temp = attrIds;
          attrIds = new String[temp.length + dynaMbrAttrNames.length];
          System.arraycopy(temp, 0, attrIds, 0, temp.length);
          System.arraycopy(dynaMbrAttrNames, 0, attrIds, temp.length, dynaMbrAttrNames.length);
          String dynaGrpFitler = iLdapConfigMgr.getDynamicGroupFilter();
          for (int i = 0, n = bases.length; i < n; i++) {
              String base = bases[i];
              for (NamingEnumeration<SearchResult> urls = search(base, dynaGrpFitler, SearchControls.SUBTREE_SCOPE, attrIds); urls.hasMoreElements();) {
                  javax.naming.directory.SearchResult thisEntry = urls.nextElement();
                  if (thisEntry == null) {
                      continue;
                  }
                  String entryName = thisEntry.getName();
                  if (entryName == null || entryName.trim().length() == 0) {
                      continue;
                  }
                  String dn = LdapHelper.prepareDN(entryName, base);
                  javax.naming.directory.Attributes attrs = thisEntry.getAttributes();
                  String extId = iLdapConfigMgr.getExtIdFromAttributes(dn, SchemaConstants.DO_GROUP, attrs);
                  String uniqueName = getUniqueName(dn, SchemaConstants.DO_GROUP, attrs);
                  LdapEntry ldapEntry = new LdapEntry(dn, extId, uniqueName, SchemaConstants.DO_GROUP, attrs);
                  dynaGrps.put(ldapEntry.getDN(), ldapEntry);
              }
          }
          return dynaGrps;
      }