@Override
public String render(Model model, int index, int size, Map<String, Object> session) {
Map<String, Object> vars = new HashMap<>();
ClassTypeInfo type = ((ClassTypeInfo)model.getVars().get("type"));
Set<TypeInfo> importedTypes = (Set<TypeInfo>)model.getVars().get("importedTypes");
Set<TypeInfo> superTypes = (Set<TypeInfo>)model.getVars().get("superTypes");
vars.putAll(TypeNameTranslator.vars(name));
vars.putAll(model.getVars());
vars.put("typeHelper", new TypeHelper());
vars.put("className", Helper.getSimpleName(type.getName()));
vars.put("packageName", type.getRaw().translatePackageName("scala"));
vars.put("imps", adjustedImports(type, importedTypes, superTypes));
vars.put("isAllSuperTypesAbstract",isAllSuperTypesAbstract(superTypes));
vars.putAll(ClassKind.vars());
vars.putAll(MethodKind.vars());
vars.putAll(Case.vars());
Writer writer = new StringWriter();
try {
template.process(vars, writer);
return writer.toString();
} catch (TemplateException e) {
e.printStackTrace();
throw new RuntimeException(e);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}