private void addInputRedirectionMessage(@NotNull Project project, @NotNull ExecutionResult executionResult) {
    final String filePath = FileUtil.toSystemDependentName(new File(myConfig.getInputFile()).getAbsolutePath());
    final ProcessHandler processHandler = executionResult.getProcessHandler();
    processHandler.addProcessListener(new ProcessAdapter() {
      @Override
      public void startNotified(@NotNull ProcessEvent event) {
        processHandler.notifyTextAvailable(INPUT_FILE_MESSAGE + filePath + "\n", ProcessOutputTypes.SYSTEM);
      }

      @Override
      public void processTerminated(@NotNull ProcessEvent event) {
        processHandler.removeProcessListener(this);
      }
    });

    final ExecutionConsole console = executionResult.getExecutionConsole();
    if (console instanceof ConsoleView) {
      ((ConsoleView)console).addMessageFilter(new Filter() {
        @Override
        public @Nullable Result applyFilter(@NotNull String line, int entireLength) {
          int position = line.indexOf(INPUT_FILE_MESSAGE);
          if (position >= 0) {
            VirtualFile file = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(new File(filePath));
            if (file == null) {
              return null;
            }
            return new Result(entireLength - filePath.length() - 1, entireLength,
                              new OpenFileHyperlinkInfo(new OpenFileDescriptor(project, file)));
          }
          return null;
        }
      });
    }
  }
private void addInputRedirectionMessage(@NotNull Project project, @NotNull ExecutionResult executionResult)