class InteractionModelRenderer {

    public InteractionModel render(SkillModel skillModel, Locale locale) {
        assertNotNull(skillModel, "skillDefinition");
        assertNotNull(locale, "locale");
        if (!skillModel.getInvocationNames().containsKey(locale)) {
            throw new IllegalArgumentException("no invocation name specified for locale: " + locale);
        }

        SubModel subModel = modelRenderer.render(skillModel.getModel(), locale);

        LanguageModel languageModel = LanguageModel.builder()
            .withInvocationName(skillModel.getInvocationNames().get(locale))
            .withIntents(new ArrayList<>(subModel.getLanguageModel().getIntents()))
            .withTypes(new ArrayList<>(subModel.getLanguageModel().getTypes()))
            .build();

        return InteractionModel.builder()
            .withLanguageModel(languageModel)
            .withDialog(subModel.getDialog())
            .withPrompts(subModel.getPrompts())
            .build();
    }

    public  InteractionModelRenderer(ModelRenderer modelRenderer);
    public  InteractionModelRenderer();

}