@NotNull
    Collection<AbstractTreeNode<?>> createChildren(@NotNull Node parent, @NotNull Collection<? extends AbstractTreeNode<?>> old) {
      Mapper<GroupNode, Object> mapper = new Mapper<>(GroupNode::new, GroupNode.class, old);
      ModuleManager manager = getModuleManager(parent.getProject());
      char separator = manager != null && manager.hasModuleGroups() ? VfsUtilCore.VFS_SEPARATOR_CHAR : '.';
      boolean compactDirectories = parent.getSettings().isCompactDirectories();
      List<AbstractTreeNode<?>> children = new SmartList<>();
      for (Group group : groups.values()) {
        Object id = group.id;
        Group single = !compactDirectories ? null : group.getSingleGroup();
        if (single != null) {
          StringBuilder sb = new StringBuilder(id.toString());
          do {
            group = single;
            sb.append(separator).append(group.id);
            single = single.getSingleGroup();
          }
          while (single != null);
          id = sb.toString();
        }
        GroupNode node = mapper.apply(parent, id);
        node.setGroup(group);
        children.add(node);
      }
      children.addAll(roots);
      return children;
    }
@NotNull
    Collection<AbstractTreeNode<?>> createChildren(@NotNull Node parent, @NotNull Collection<? extends AbstractTreeNode<?>> old)