private Type getPropertyType(Class<?> cl, AnnotatedElement annotated, Class<?> type,
            java.lang.reflect.Type genericType) {
        Type propertyType = null;
        if (annotated.isAnnotationPresent(embeddedAnnotation)) {
            Class<?> embeddableType = type;
            if (Collection.class.isAssignableFrom(type)) {
                embeddableType = ReflectionUtils.getTypeParameterAsClass(genericType, 0);
            } else if (Map.class.isAssignableFrom(type)) {
                embeddableType = ReflectionUtils.getTypeParameterAsClass(genericType, 1);
            }
            if (!embeddableType.getName().startsWith("java.")) {
                typeFactory.addEmbeddableType(embeddableType);
                if (!embeddableTypes.containsKey(embeddableType)
                  && !entityTypes.containsKey(embeddableType)
                  && !superTypes.containsKey(embeddableType)) {
                    EntityType entityType = createEntityType(embeddableType, embeddableTypes);
                    addProperties(embeddableType, entityType);
                    if (embeddableType == type) {
                        propertyType = entityType;
                    }
                }
            }
        }
        if (propertyType == null) {
            propertyType = typeFactory.get(type, annotated, genericType);
            if (propertyType instanceof EntityType && !allTypes.containsKey(ClassUtils.getFullName(type))) {
                String fullName = ClassUtils.getFullName(type);
                if (!allTypes.containsKey(fullName)) {
                    allTypes.put(fullName, (EntityType) propertyType);
                }
            }
        }
        return propertyType;
    }
Export the given classes

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