int mods = annotation.valueClassIsPublic() ? JMod.PUBLIC: JMod.NONE;
JDefinedClass valueClass = jpackage._class(mods, className, EClassType.CLASS);
JAnnotationUse generatedAnnotation = valueClass.annotate(Generated.class);
generatedAnnotation.param("value", GenerateValueClassForVisitorProcessor.class.getName());
valueClass.annotate(ParametersAreNonnullByDefault.class);
for (JTypeVar visitorTypeParameter: visitorInterface.getValueTypeParameters()) {
Types.generifyWithBoundsFrom(valueClass, visitorTypeParameter.name(), visitorTypeParameter);
}
if (annotation.valueClassIsSerializable()) {
valueClass._implements(types._Serializable);