When ExecutionModel is asked to execute a test class, it prepares a ClassExecution representing the work in progress, instead of assuming a ClassExecution will be provided to it.
When ExecutionModel is asked to execute a class, it prepares the CaseExecutions itself and returns them as the result, instead of assuming they will be passed in.
When ExecutionModel is asked to execute an instance, it prepares an InstanceExecution representing the work in progress, instead of assuming an InstanceExecution will be provided to it.
Extract method within CreateInstancePerCase and CreateInstancePerClass to reveal that the body of their try/catch blocks are identical.
Resolve duplication between CreateInstancePerCase and CreateInstancePerClass by moving the common code to the ExecutionModel.
Rename ConfigModel.Factory to ConfigModel.TestClassFactory to make it clear what construction it affects.