void (@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(); }