folder.add(changePaths[i]);
folder.add(changePath);
    private Object[] getGroups(LogEntryChangePath[] changePaths) {        Set folderNames = new HashSet();         for( int i = 0; i < changePaths.length; i++) {          folderNames.add(getFolderName(changePaths[i]));        }                TreeMap folders = new TreeMap();        for( int i = 0; i < changePaths.length; i++) {          String path = changePaths[i].getPath();          if(folderNames.contains(path)) {            // changed folder            HistoryFolder folder = (HistoryFolder) folders.get(path);            if(folder==null) {              folder = new HistoryFolder(path, changePaths[i].getAction());              folders.put(path, folder);            }          } else {            // changed resource            path = getFolderName(changePaths[i]);            HistoryFolder folder = (HistoryFolder) folders.get(path);            if(folder==null) {              folder = new HistoryFolder(path, '?');              folders.put(path, folder);            }            folder.add(changePaths[i]);          }        }                ArrayList groups = new ArrayList();        for( Iterator it = folders.values().iterator(); it.hasNext();) {            HistoryFolder folder = (HistoryFolder) it.next();            Object[] children = folder.getChildren();            if(children.length==1) {                LogEntryChangePath changePath = (LogEntryChangePath)children[0];                groups.add(new HistoryFolder(changePath.getPath(), changePath.getAction()));            } else if(children.length>1) {                groups.add(folder);            }        }                return groups.toArray();    }