class GameSpecSourceInstantiator {

    public List<GameSpecSource> instantiateGameSpecSources(List<Class> gamesClasses) {
        return gamesClasses
            .stream()
            .map(gameClass -> {
                try {
                    Constructor<GameSpecSource> defaultConstructor = gameClass.getConstructor();
                    return defaultConstructor.newInstance();
                } catch (
                    NoSuchMethodException |
                        IllegalAccessException |
                        InstantiationException |
                        InvocationTargetException |
                        ClassCastException e) {
                    throw new GameSpecInstantiationException("Failed to create new instance of class " + gameClass, e);
                }
            })
            .collect(Collectors.toList());
    }

}