@Override
  public void populateContainer(TaskContainer container) {
    ComputationSteps steps = new ReportComputationSteps(container);
    container.add(SettingsLoader.class);
    container.add(task);
    container.add(steps);
    container.add(componentClasses());
    for (ReportAnalysisComponentProvider componentProvider : componentProviders) {
      container.add(componentProvider.getComponents());
    }
    container.add(steps.orderedStepClasses());
  }
@Test
  public void all_computation_steps_are_added_in_order_to_the_container() {
    ListTaskContainer container = new ListTaskContainer();
    underTest.populateContainer(container);

    Set<String> computationStepClassNames = container.getAddedComponents().stream()
      .map(s -> {
        if (s instanceof Class) {
          return (Class<?>) s;
        }
        return null;
      })
      .filter(Objects::nonNull)
      .filter(ComputationStep.class::isAssignableFrom)
      .map(Class::getCanonicalName)
      .collect(Collectors.toSet());

    assertThat(difference(retrieveStepPackageStepsCanonicalNames(PROJECTANALYSIS_STEP_PACKAGE), computationStepClassNames)).isEmpty();
  }