/**
  * Schedules the initial runs of the matrix runs.
  *
  * @param execution Provided by the plugin.
  * @param retries Mutable map that is used to track the number of times a configuration has been
  *     run. The map is populated with '0' for every configuration scheduled.
  * @return List of configurations scheduled. This is a subset of the configurations passed in the
  *     execution field, since plugins can reject specific axises from running.
  */
 private LinkedList<MatrixConfiguration> scheduleMatrixRuns(
     MatrixBuild.MatrixBuildExecution execution, Map<MatrixConfiguration, Integer> retries)
     throws InterruptedException {
   MatrixBuild build = (MatrixBuild) execution.getBuild();
   LinkedList<MatrixConfiguration> configurations = new LinkedList<MatrixConfiguration>();
   for (MatrixConfiguration configuration : execution.getActiveConfigurations()) {
     if (MatrixBuildListener.buildConfiguration(build, configuration)) {
       int defaultRetriedCount = 0;
       retries.put(configuration, defaultRetriedCount);
       configurations.add(configuration);
       scheduleConfigurationBuild(execution, configuration, new Cause.UpstreamCause((Run) build));
     }
   }
   return configurations;
 }