class ValidationFactory {

    public TypeReport validateBundle( ObjectBundle bundle, Class<? extends IdentifiableObject> klass,
        List<IdentifiableObject> persistedObjects, List<IdentifiableObject> nonPersistedObjects )
    {
        ValidationContext ctx = getContext();
        TypeReport typeReport = new ValidationRunner( validatorMap.get( bundle.getImportMode() ) )
            .executeValidationChain( bundle, klass, persistedObjects, nonPersistedObjects, ctx );

        // Remove invalid objects from the bundle
        removeFromBundle( klass, ctx, bundle );

        return addStatistics( typeReport, bundle, persistedObjects, nonPersistedObjects );
    }

    public  ValidationFactory( SchemaValidator schemaValidator, SchemaService schemaService, AclService aclService,
        UserService userService, List<ObjectBundleHook> objectBundleHooks,
        Map<ImportStrategy, List<Class<? extends ValidationCheck>>> validatorMap );

}