@Override
  public @Nullable CtrlMouseData getCtrlMouseData(@NotNull Editor editor, @NotNull PsiFile file, int offset) {
    final PsiElement elementAtPointer = file.findElementAt(offset);
    if (elementAtPointer == null) {
      return null;
    }
    PsiElement[] targetElements = targetElements(editor, offset);
    if (targetElements == null || targetElements.length == 0) {
      return null;
    }
    else if (targetElements.length > 1) {
      return multipleTargetsCtrlMouseData(getReferenceRanges(elementAtPointer));
    }
    else {
      PsiElement targetElement = targetElement(targetElements[0]);
      if (targetElement == null) {
        return null;
      }
      return psiCtrlMouseData(elementAtPointer, targetElement);
    }
  }
@Override
  public @Nullable CtrlMouseData getCtrlMouseData(@NotNull Editor editor, @NotNull PsiFile file, int offset)