String (@NotNull Iterable<? extends PsiElement> elements, @NotNull String start, @NotNull String pattern) { @NonNls StringBuilder result = new StringBuilder(); result.append("<html><body>"); result.append(start); Set<String> names = new LinkedHashSet<>(); for (PsiElement element : elements) { String descr = ""; if (element instanceof PsiClass) { String className = ClassPresentationUtil.getNameForClass((PsiClass)element, true); descr = MessageFormat.format(pattern, className); } else if (element instanceof PsiMethod) { String methodName = ((PsiMethod)element).getName(); PsiClass aClass = ((PsiMethod)element).getContainingClass(); String className = aClass == null ? "" : ClassPresentationUtil.getNameForClass(aClass, true); descr = MessageFormat.format(pattern, methodName, className); } else if (element instanceof PsiFile) { descr = MessageFormat.format(pattern, ((PsiFile)element).getName()); } names.add(descr); } @NonNls String sep = ""; for (String name : names) { result.append(sep); sep = "<br>"; result.append(name); } result.append("</body></html>"); return result.toString(); }