@Override
  public @Nullable ExecutionResult execute(Executor executor, @NotNull ProgramRunner<?> runner) throws ExecutionException {
    final ServerConnection connection = ServerConnectionManager.getInstance().getOrCreateConnection(myServer);
    final Project project = myEnvironment.getProject();
    RemoteServersView.getInstance(project).showServerConnection(connection);

    final DebugConnector<?, ?> debugConnector;
    if (DefaultDebugExecutor.getDebugExecutorInstance().equals(executor)) {
      debugConnector = myServer.getType().createDebugConnector();
    }
    else {
      debugConnector = null;
    }

    DeploymentTask<D> task = new DeploymentTaskImpl<>(mySource, myConfiguration, project, debugConnector, myEnvironment);
    DeployToServerRunConfigurationExtensionsManager.getInstance().patchDeploymentTask(task);
    connection.deploy(task,
                      s -> RemoteServersView.getInstance(project).showDeployment(connection, (String)s));
    return null;
  }
@Override
  public @Nullable ExecutionResult execute(Executor executor, @NotNull ProgramRunner<?> runner)