class JpaUnitConcordionRunner extends ConcordionRunner {

    @Override
    protected Object createTest() throws Exception {
        Object enhancedFixture;

        final Fixture setupFixture = (Fixture) getValue(this, "setupFixture");
        final boolean isFirstTest = (boolean) getValue(this, "firstTest");

        if (isFirstTest) {
            injectValue(this, "firstTest", false);
            // we've already created a test object above, so reuse it to make sure we don't
            // initialize the fixture object multiple times
            enhancedFixture = setupFixture.getFixtureObject();

            // we need to setup the concordion scoped objects so that the @Before methods and @Rules
            // can access them
            final Object fixtureObject = getDelegate(enhancedFixture);
            setupFixture.setupForRun(fixtureObject);

            injectFields(fixtureObject);
        } else {
            // junit creates a new object for each test case, so we need to capture this
            // and setup our object - that makes sure that scoped variables are injected properly
            // the setup of concordion scoped objects is done in this call
            final Object fixtureObject = super.createTest();
            injectFields(fixtureObject);
            enhancedFixture = EnhancedProxy.create(fixtureObject, executor);
        }

        return enhancedFixture;
    }

    public  JpaUnitConcordionRunner(final Class<?> fixtureClass);

}