private void serializeMetaTypes() {
        if (!context.supertypes.isEmpty()) {
            logInfo("Serializing Supertypes");
            serialize(conf.getSupertypeSerializer(), context.supertypes.values());
        }

        if (!context.entityTypes.isEmpty()) {
            logInfo("Serializing Entity types");
            serialize(conf.getEntitySerializer(), context.entityTypes.values());
        }

        if (!context.extensionTypes.isEmpty()) {
            logInfo("Serializing Extension types");
            serialize(conf.getEmbeddableSerializer(), context.extensionTypes.values());
        }

        if (!context.embeddableTypes.isEmpty()) {
            logInfo("Serializing Embeddable types");
            serialize(conf.getEmbeddableSerializer(), context.embeddableTypes.values());
        }

        if (!context.projectionTypes.isEmpty()) {
            logInfo("Serializing Projection types");
            serialize(conf.getDTOSerializer(), context.projectionTypes.values());
        }

    }
{@code AbstractQuerydslProcessor} is the base class for Querydsl annotation processors and
contains the main processing logic. The subclasses just provide the configuration.

@author tiwe
querydsl-apt/src/main/java/com/querydsl/apt/AbstractQuerydslProcessor.java