/**
   * Make the experiment jobs
   *
   * @param entries the entries
   * @param data the data
   * @param logger the logger
   * @return the jobs, or {@code null} if none were found
   * @throws Exception if something goes wrong
   */
  private static final _PseudoJob[] __makeExperimentsJobs(
      final ArrayList<_ModuleEntry> entries, final IExperimentSet data, final Logger logger)
      throws Exception {
    final int size;
    final ArrayListView<? extends IExperiment> list;
    final _PseudoJob[] singleExperiments;
    IExperiment experiment;
    int i;

    if ((entries == null) || (entries.size() <= 0)) {
      return null;
    }

    if ((data == null) || ((list = data.getData()) == null) || ((size = list.size()) <= 0)) {
      return null;
    }

    singleExperiments = new _PseudoJob[size];
    for (i = size; (--i) >= 0; ) {
      experiment = list.get(i);
      singleExperiments[i] =
          new _ExperimentJob(
              experiment,
              data,
              logger,
              _ModuleEntry.__makeExperimentJobs(entries, experiment, logger));
    }

    return singleExperiments;
  }
  /**
   * Compute the aggregate per experiment
   *
   * @param data the data
   * @return the aggregated data
   */
  private final IMatrix __computeExperiment(final IExperiment data) {
    final IMatrix[] matrices;
    final ArrayListView<? extends IInstanceRuns> runs;
    int i;

    runs = data.getData();
    i = runs.size();
    matrices = new IMatrix[i];

    for (; (--i) >= 0; ) {
      matrices[i] = this.__computeInstanceRuns(runs.get(i));
    }

    return this.m_aggregate.aggregate2D(matrices, 0, 1, Identity.INSTANCE);
  }