List<TextRange> (final ExceptionLineParser worker, LineResult previousLineResult) { String method = worker.getMethod().replaceFirst("\\$lambda\\$\\d+$", "") .replaceFirst("^lambda\\$(.+)\\$\\d+$", "$1"); UClass psiClass = worker.getUClass(); if (psiClass == null) return null; List<UMethod> methods; if (method.contains("<init>")) { // constructor methods = ContainerUtil.filter(psiClass.getMethods(), m -> m.isConstructor()); } else if (method.contains("$")) { // access$100 return null; } else { methods = ContainerUtil.filter(psiClass.getMethods(), m -> method.equals(m.getName())); } if (!methods.isEmpty()) { if (methods.size() == 1) { PsiElement psi = methods.get(0).getSourcePsi(); if (psi == null) return null; final TextRange range = psi.getTextRange(); return Collections.singletonList(range); } else { List<UMethod> selectedMethods = selectMethod(methods, previousLineResult); final List<UMethod> toIterate = selectedMethods == null ? methods : selectedMethods; final List<TextRange> result = new ArrayList<>(); for (UMethod psiMethod : toIterate) { PsiElement psi = psiMethod.getSourcePsi(); if (psi != null) { result.add(psi.getTextRange()); } } return result; } } return null; }