Set<TemplateContextType> (@NotNull TemplateActionContext templateActionContext) { LinkedHashSet<TemplateContextType> set = new LinkedHashSet<>(); for (TemplateContextType contextType : getAllContextTypes()) { if (contextType.isInContext(templateActionContext)) { set.add(contextType); } } removeBases: while (true) { for (TemplateContextType type : set) { if (set.removeAll(getBases(type))) { continue removeBases; } } return set; } }