class BasicLevelPreparer implements LevelPreparer {

    @Override
    public PreparedLevel prepare(Level level) {
        Type<?> type = resolveType(level.getType(), level.getName());
        Matcher matcher = resolveMatcher(level.getMatcher(), level.getName());
        Function levelCreator = resolveLevelCreator(level.getLevelCreator());

        return new PreparedLevel(level.getName(), level.isArray(), type, level.getMatcher(), matcher, levelCreator);
    }

    public  BasicLevelPreparer(MatcherRepository matcherRepository, TypeRepository typeRepository, FunctionProvider functionProvider);

}