@Override
  public void execute(ComputationStep.Context context) {
    new PathAwareCrawler<>(
      FormulaExecutorComponentVisitor.newBuilder(metricRepository, measureRepository)
        .buildFor(
          Iterables.concat(NewLinesAndConditionsCoverageFormula.from(newLinesRepository, reportReader), FORMULAS)))
            .visit(treeRootHolder.getRoot());
  }
@Test
  public void verify_computation_of_measures_for_new_lines_for_FILE() {
    when(newLinesRepository.newLinesAvailable()).thenReturn(true);

    treeRootHolder.setRoot(FILE_COMPONENT);
    setNewLines(FILE_1, 1, 2, 4);

    reportReader.putCoverage(FILE_COMPONENT.getReportAttributes().getRef(),
      asList(
        ScannerReport.LineCoverage.newBuilder().setLine(2).setHits(false).build(),
        ScannerReport.LineCoverage.newBuilder().setLine(3).setHits(true).build(),
        ScannerReport.LineCoverage.newBuilder().setLine(4).setHits(true).build()));

    underTest.execute(new TestComputationStepContext());

    assertThat(toEntries(measureRepository.getAddedRawMeasures(FILE_COMPONENT.getReportAttributes().getRef()))).contains(
      entryOf(NEW_LINES_TO_COVER_KEY, createMeasure(2)),
      entryOf(NEW_UNCOVERED_LINES_KEY, createMeasure(1)),
      entryOf(NEW_CONDITIONS_TO_COVER_KEY, createMeasure(0)),
      entryOf(NEW_UNCOVERED_CONDITIONS_KEY, createMeasure(0)));
  }