private EntityType createEntityType(Class<?> cl, Map<Class<?>, EntityType> types) {
        if (types.get(cl) != null) {
            return types.get(cl);
        } else {
            EntityType type = allTypes.get(ClassUtils.getFullName(cl));
            if (type == null) {
                type = typeFactory.getEntityType(cl);
            }
            types.put(cl, type);
            String fullName = ClassUtils.getFullName(cl);
            if (!allTypes.containsKey(fullName)) {
                allTypes.put(fullName, type);
            }

            typeMappings.register(type, queryTypeFactory.create(type));

            if (strictMode && cl.getSuperclass() != null) {
                @SuppressWarnings("unchecked")
                Class<? extends Annotation>[] annotations =
                        (Class<? extends Annotation>[]) new Class<?>[] {entityAnnotation, supertypeAnnotation, embeddableAnnotation};
                if (!containsAny(cl.getSuperclass(), annotations)) {
                    // skip supertype handling
                    return type;
                }
            }

            if (cl.getSuperclass() != null && !stopClasses.contains(cl.getSuperclass())
                && !cl.getSuperclass().isAnnotationPresent(QueryExclude.class)) {
                type.addSupertype(new Supertype(typeFactory.get(cl.getSuperclass(), cl.getGenericSuperclass())));
            }
            if (cl.isInterface()) {
                for (Class<?> iface : cl.getInterfaces()) {
                    if (!stopClasses.contains(iface) && !iface.isAnnotationPresent(QueryExclude.class)) {
                        type.addSupertype(new Supertype(typeFactory.get(iface)));
                    }
                }
            }

            return type;
        }
    }
Export the given classes

@param classes classes to be scanned
querydsl-codegen/src/main/java/com/querydsl/codegen/GenericExporter.java