@Override
    protected void addCompletions(@NotNull CompletionParameters parameters,
                                  @NotNull ProcessingContext context,
                                  @NotNull CompletionResultSet result) {
      PsiElement original = parameters.getOriginalPosition();
      if (original == null) return;
      int textLength = parameters.getOffset() - parameters.getPosition().getTextRange().getStartOffset();
      String originalText = original.getText().substring(0, textLength);
      CompletionResultSet resultSet = result.withPrefixMatcher(originalText);

      String defaultShell = EnvironmentUtil.getValue("SHELL");
      if (defaultShell != null) {
        String defaultShebang = SHEBANG_PREFIX + defaultShell;
        if (defaultShebang.startsWith(originalText)) {
          resultSet.addElement(createLookupElement(defaultShebang, parameters, 10));
        }
      }

      ACCEPTABLE_SHELLS.stream().map(shell -> SHEBANG_PREFIX + shell)
        .filter(shebang -> shebang.startsWith(originalText))
        .forEach(shebang -> resultSet.addElement(createLookupElement(shebang, parameters, 0)));
      resultSet.stopHere();
    }
@Override
    protected void addCompletions(@NotNull CompletionParameters parameters,
                                  @NotNull ProcessingContext context,
                                  @NotNull CompletionResultSet result)