public Location<PsiMethod> getMethodLocation(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;
  }
public Location<PsiMethod> getMethodLocation(final Project project)