void (@NotNull Target target, @NotNull Parameters configuration, @NotNull Pair<Target, Parameters> key) { ProgramRunner<?> runner = new ProgramRunner<>() { @Override @NotNull public String getRunnerId() { return "MyRunner"; } @Override public void execute(@NotNull ExecutionEnvironment environment) throws ExecutionException { ExecutionManager.getInstance(environment.getProject()).startRunProfile(environment, state -> { return DefaultProgramRunnerKt.executeState(state, environment, this); }); } @Override public boolean canRun(@NotNull String executorId, @NotNull RunProfile profile) { return true; } }; Executor executor = DefaultRunExecutor.getRunExecutorInstance(); ProcessHandler processHandler; try { RunProfileState state = getRunProfileState(target, configuration, executor); ExecutionResult result = state.execute(executor, runner); //noinspection ConstantConditions processHandler = result.getProcessHandler(); } catch (Throwable e) { dropProcessInfo(key, e, null); return; } processHandler.addProcessListener(getProcessListener(key)); processHandler.startNotify(); }