@Override
  public void processEntries(@NotNull final List<? extends Pair<String, String>> entries,
                             @NotNull final Context context,
                             @NotNull final Runnable runNext) {

    if (!getDirectory(context)) return;
    if (!getDirectoryName(context)) return;

    ProgressManager.getInstance().run(new Task.Backgroundable(null, VcsBundle.message("progress.title.hey"), true) {
      @Override
      public void run(@NotNull ProgressIndicator indicator) {
        for (Pair<String, String> pair : entries) {
          String vcs = pair.getFirst();
          final VcsCheckoutProcessor processor = VcsCheckoutProcessor.getProcessor(vcs);
          if (processor == null) {
            LOG.error("Checkout processor not found for " + vcs);
            return;
          }

          JsonElement element = new JsonParser().parse(pair.getSecond());

          HashMap<String, String> parameters = new HashMap<>();
          for (Map.Entry<String, JsonElement> entry : element.getAsJsonObject().entrySet()) {
            JsonElement value = entry.getValue();
            parameters.put(entry.getKey(), value instanceof JsonPrimitive ? value.getAsString() : value.toString());
          }
          String directoryName = context.directoryName;
          if (parameters.get("targetDir") != null) {
            directoryName += "/" + parameters.get("targetDir");
          }
          if (!processor.checkout(parameters, context.directory, directoryName)) return;
        }
        runNext.run();
      }
    });
  }
@Override
  public void processEntries(@NotNull final List<? extends Pair<String, String>> entries,
                             @NotNull final Context context,
                             @NotNull final Runnable runNext)