protected NewConcreteType createType(final Type type, final String newTypeName) {
final GeneratorContext context = this.getGeneratorContext();
context.branch();
context.info(newTypeName);
final NewConcreteType newType = context.newConcreteType(newTypeName);
newType.setAbstract(false);
newType.setFinal(true);
final Type superType = this.getImageFactoryImpl();
newType.setSuperType(superType);
newType.addInterface(type);
newType.setVisibility(Visibility.PUBLIC);
context.debug("extends " + superType.getName());
context.debug("implements: " + type.getName());
context.debug("public");
context.debug("final");