class EnumView extends ClassOrInterfaceView<Enum> {

    @Override
	protected String renderDeclarationType() {
		return ENUM_STRING;
	}

	@Override
	public String extendsOrImplementsInterfaces() {
		return IMPLEMENTS_STRING;
	}

	@Override
	protected String renderSupertype(Generator gen, Enum model) {
		return "";
	}

	@Override
	protected String onBeforeFields(Generator gen, Enum model) {<FILL_FUNCTION_BODY>}

    @Override
    protected String renderConstructors(Generator gen, Enum model) {
        requireNonNulls(gen, model);
        
        return gen.onEach(model.getConstructors())
            .collect(joining(Formatting.dnl()));
    }
}

        requireNonNulls(gen, model);
        
        final List<String> constants = model.getConstants().stream()
			.map(c -> gen.on(c).get()).collect(toList());
        
        Formatting.alignTabs(constants);
        
		return constants.stream().collect(
				joinIfNotEmpty(
					(!model.getConstants().isEmpty()
					&& (!model.getConstants().get(0).getValues().isEmpty()
					||  !model.getConstants().get(0).getAnnotations().isEmpty()))
                        ? "," + Formatting.nl() : ", ",
					"", 
					";"
				)
			);
	
<methods>public java.lang.String fieldSeparator(com.speedment.common.codegen.model.Enum) ,public java.lang.String fieldSuffix() ,public Optional<java.lang.String> transform(com.speedment.common.codegen.Generator, com.speedment.common.codegen.model.Enum) <variables>protected static final java.lang.String CLASS_STRING,private static final java.util.regex.Pattern EMPTY_BLOCK,protected static final java.lang.String ENUM_STRING,protected static final java.lang.String EXTENDS_STRING,protected static final java.lang.String IMPLEMENTS_STRING,protected static final java.lang.String INTERFACE_STRING