code: @Override
  	public RunResult invoke(Object forkTestSet)
  			throws TestSetFailedException, ReporterException, InvocationTargetException {
  		if (forkTestSet == null) {
  			RunResult r = RunResult.noTestsRun();
  			@SuppressWarnings("rawtypes")
  			Iterable<Class<?>> i = getSuites();
  			for (Class<?> c : i) {
  				r = r.aggregate(invoke(c));
  			}
  			return r;
  		}
  		ReporterFactory reporterFactory = providerParameters.getReporterFactory();
  
  		ConsoleStream consoleLogger = providerParameters.getConsoleLogger();
  		RunListener rl = reporterFactory.createReporter();
  
  		if (!(forkTestSet instanceof Class)) {
  			throw new TestSetFailedException("Unexpected error. Received parameter is not a class");
  		}
  		@SuppressWarnings("unchecked")
  		Class<T> underTest = (Class<T>) forkTestSet;
  		TestResultListener<T> listener = new PowerUnitProviderListener<>(consoleLogger, rl, underTest);
  
  		DefaultPowerUnitRunnerImpl<T> runner = new DefaultPowerUnitRunnerImpl<>(underTest);
  		runner.addListener(listener);
  		runner.run();
  		return reporterFactory.close();
  
  	}
docs: /*
  (non-Javadoc)
  
  @see
  org.apache.maven.surefire.providerapi.SurefireProvider#invoke(java.lang
  .Object)