@Override
        public Object[] getElements(Object inputElement) {
            if (groupingColumn != null) {
                Object[] elements = super.getElements(inputElement);

                if (ArrayUtils.isEmpty(elements)) {
                    return elements;
                }

                int columnIndex = groupingColumn.columnIndex;
                final Map<Object, List<Object>> groups = new HashMap<>();

                for (Object element : elements) {
                    final Object key = getCellValue(element, columnIndex);
                    final List<Object> group = groups.computeIfAbsent(key, x -> new ArrayList<>());
                    group.add(element);
                }

                return groups.entrySet().stream()
                    .map(x -> new ObjectsGroupingWrapper(x.getKey(), x.getValue()))
                    .toArray();
            }
            return super.getElements(inputElement);
        }
Searcher. Filters elements by name and description
plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/navigator/itemlist/ObjectListControl.java