code: public void run( String input, String output )
      {
          Report report = null;
  
          try
          {
              report = reportGenerator.openReport( output );
              monitor.testRunning( input );
  
  			final Timer total = new Timer().start();
  
              documentRepository.setSpecificationDialect(dialect);
              Document document = documentRepository.loadDocument( input );
  			document.setSections(sections);
              document.addFilter( new CommentTableFilter() );
              document.addFilter( new SectionsTableFilter( sections ) );
              document.addFilter( new GreenPepperTableFilter( lazy ) );
  
  			final Timer execution = new Timer().start();
  
              systemUnderDevelopment.onStartDocument(document);
              document.execute( newInterpreterSelector(systemUnderDevelopment) );
              systemUnderDevelopment.onEndDocument(document);
  
  			execution.stop();
              document.done();
  			total.stop();
  
  			document.getTimeStatistics().tally( total.elapse(), execution.elapse() );
  
              report.generate( document );
              Statistics stats = document.getStatistics();
              monitor.testDone( stats.rightCount(), stats.wrongCount(), stats.exceptionCount(), stats.ignoredCount() );
          }
          catch (Exception e)
          {
              LOGGER.error("Failed to run the specification " + input, e);
              if (report != null) report.renderException( e );
              monitor.exceptionOccured( e );
          }
          finally
          {
              closeReport( report );
          }
  
      }
docs: {@inheritDoc}