@NotNull
    @Override
    public ExecutionResult execute(@NotNull Executor executor, @NotNull ProgramRunner<?> runner) throws ExecutionException {
      checkMavenWrapperAndPatchJavaParams();
      final ProcessHandler processHandler = startProcess();
      ExecutionEnvironment environment = getEnvironment();
      TargetEnvironment targetEnvironment = environment.getPreparedTargetEnvironment(this, TargetProgressIndicator.EMPTY);
      Function<String, String> targetFileMapper = path -> {
        return path != null && SystemInfo.isWindows && path.charAt(0) == '/' ? path.substring(1) : path;
      };
      if (!(targetEnvironment instanceof LocalTargetEnvironment)) {
        TargetEnvironmentRequest targetEnvironmentRequest = getTargetEnvironmentRequest();
        LanguageRuntimeType.VolumeType mavenProjectFolderVolumeType = MavenRuntimeTypeConstants.getPROJECT_FOLDER_VOLUME().getType();
        Set<TargetEnvironment.UploadRoot> uploadVolumes = targetEnvironmentRequest.getUploadVolumes();
        for (TargetEnvironment.UploadRoot uploadVolume : uploadVolumes) {
          String localPath = uploadVolume.getLocalRootPath().toString();
          TargetEnvironment.TargetPath targetRootPath = uploadVolume.getTargetRootPath();
          if (targetRootPath instanceof TargetEnvironment.TargetPath.Temporary &&
              mavenProjectFolderVolumeType.getId().equals(((TargetEnvironment.TargetPath.Temporary)targetRootPath).getHint())) {
            String targetPath = TargetEnvironmentFunctions.getTargetUploadPath(uploadVolume).apply(targetEnvironment);
            targetFileMapper = createTargetFileMapper(targetEnvironment, localPath, targetPath);
            break;
          }
        }
      }

      TargetedCommandLineBuilder targetedCommandLineBuilder = getTargetedCommandLine();
      String targetWorkingDirectory = targetedCommandLineBuilder.build().getWorkingDirectory();
      String workingDir =
        targetWorkingDirectory != null ? targetFileMapper.apply(targetWorkingDirectory) : getEnvironment().getProject().getBasePath();
      ExternalSystemTaskId taskId = ExternalSystemTaskId.create(MavenUtil.SYSTEM_ID, ExternalSystemTaskType.EXECUTE_TASK, myConfiguration.getProject());
      DefaultBuildDescriptor descriptor =
        new DefaultBuildDescriptor(taskId, myConfiguration.getName(), workingDir, System.currentTimeMillis());
      if (MavenRunConfigurationType.isDelegate(getEnvironment())) {
        return doDelegateBuildExecute(executor, runner, taskId, descriptor, processHandler, targetFileMapper);
      }
      else {
        return doRunExecute(executor, runner, taskId, descriptor, processHandler, targetFileMapper);
      }
    }
@NotNull
    @Override
    public ExecutionResult execute(@NotNull Executor executor, @NotNull ProgramRunner<?> runner)