@Override
  public void navigate(boolean requestFocus) {
    if (!myNavigateToReference) {
      PsiElement element = getPsiElement();
      if (element instanceof Navigatable && ((Navigatable)element).canNavigate()) {
        ((Navigatable)element).navigate(requestFocus);
      }
      return;
    }

    PsiReference firstReference = myReferences.get(0);
    PsiElement element = firstReference.getElement();
    PsiElement callElement = element.getParent();
    if (callElement instanceof Navigatable && ((Navigatable)callElement).canNavigate()) {
      ((Navigatable)callElement).navigate(requestFocus);
    }
    else {
      PsiFile psiFile = callElement.getContainingFile();
      if (psiFile == null || psiFile.getVirtualFile() == null) return;
      FileEditorManager.getInstance(myProject).openFile(psiFile.getVirtualFile(), requestFocus);
    }

    Editor editor = PsiEditorUtil.findEditor(callElement);

    if (editor != null) {
      HighlightManager highlightManager = HighlightManager.getInstance(myProject);
      List<RangeHighlighter> highlighters = new ArrayList<>();
      for (PsiReference psiReference : myReferences) {
        PsiElement eachElement = psiReference.getElement();
        PsiElement eachMethodCall = eachElement.getParent();
        if (eachMethodCall != null) {
          TextRange textRange = eachMethodCall.getTextRange();
          highlightManager.addRangeHighlight(editor, textRange.getStartOffset(), textRange.getEndOffset(), 
                                             EditorColors.SEARCH_RESULT_ATTRIBUTES, false, highlighters);
        }
      }
    }
  }
@Override
  public void navigate(boolean requestFocus)