}
@Override
public Statement apply(final Statement base, final Description description) {
if (test == null) {
startingStatement = new StartingStatement(base, description.getTestClass());
} else {
startingStatement = new StartingStatement(new Statement() {
@Override
// this class avoids a dependency loop issue, we have it actually but that's just to make a nicer API
public void evaluate() throws Throwable {
// don't use testClass since it can be another instance that the test one
new InjectStatement(base, test.getClass(), test, startingStatement).evaluate();