Location<PsiMethod> (final Project project) { String className = getClassName(); final String methodName = getMethodName(); if (className == null || methodName == null) return null; final int lineNumber; try { lineNumber = getLineNumber(); } catch(NumberFormatException e) { return null; } final int dollarIndex = className.indexOf('$'); if (dollarIndex != -1) className = className.substring(0, dollarIndex); PsiClass psiClass = findClass(project, className, lineNumber); PsiElement navElement = psiClass == null ? null : psiClass.getNavigationElement(); if (psiClass == null || navElement instanceof PsiCompiledElement) return null; if (navElement instanceof PsiClass) { final PsiMethod psiMethod = getMethodAtLine((PsiClass)navElement, methodName, lineNumber); if (psiMethod != null) { return new MethodLineLocation(project, psiMethod, PsiLocation.fromPsiElement((PsiClass)navElement), lineNumber); } } return null; }