@Nullable
  @Override
  public Info getInfo(@NotNull PsiElement element) {
    if (element instanceof OuterLanguageElementImpl || !(element instanceof LeafElement ) || element.getTextRange().getStartOffset() != 0)
      return null;
    var contributionProhibited = ContainerUtil.exists(ShRunnerAdditionalCondition.EP.getExtensionsIfPointIsRegistered(), additionalCondition -> {
      return additionalCondition.isRunningProhibitedForElement(element);
    });
    if (contributionProhibited) return null;
    PsiFile psiFile = element.getContainingFile();
    if (!(psiFile instanceof ShFile) && !element.getText().startsWith("#!")) return null;

    AnAction[] actions = {ActionManager.getInstance().getAction(ShRunFileAction.ID)};
    return new Info(AllIcons.RunConfigurations.TestState.Run, actions,
        psiElement -> StringUtil.join(ContainerUtil.mapNotNull(actions, action -> ShBundle
          .message("line.marker.run.0", psiElement.getContainingFile().getName())), "\n"));
  }
@Nullable
  @Override
  public Info getInfo(@NotNull PsiElement element)