// class PanelComponent
// Ну или какой у тя там класс отвечает за рендер категорий
private final ArrayList<ModuleComponent> modules = new ArrayList<>();
private final Category category;
public void loadModules(String find) {
modules.clear();
// Карочи цикл с уловиям либо find пусто (равно "") и категория функции равна категории панели либо find не пусто и названия в нижнем регистре содержит текст из поиска в нижнем регистре.
// Можно в любом регистре главное что-бы они были одинаковы что у функции что у текста
for(Function function : Expensive.getInstance().getFunctionRegistry().getModules().stream().filter(m -> (find.isEmpty() && m.getCategory() == category) || (!find.isEmpty() && m.getName().toLowerCase().contains(find.toLowerCase()))).toList()) {
modules.add(function);
}
}