private void addProperties(Class<?> cl, EntityType type) {
        Map<String, Type> types = new HashMap<>();
        Map<String, Annotations> annotations = new HashMap<>();

        PropertyHandling.Config config = propertyHandling.getConfig(cl);

        // fields
        if (config.isFields()) {
            for (Field field : cl.getDeclaredFields()) {
                if (!Modifier.isStatic(field.getModifiers())) {
                    if (Modifier.isTransient(field.getModifiers()) && !field.isAnnotationPresent(QueryType.class)) {
                        continue;
                    }
                    AnnotatedElement annotated = ReflectionUtils.getAnnotatedElement(cl, field.getName(), field.getType());
                    Type propertyType = getPropertyType(cl, annotated, field.getType(), field.getGenericType());
                    Annotations ann = new Annotations(field);
                    types.put(field.getName(), propertyType);
                    annotations.put(field.getName(), ann);
                }
            }
        }

        // getters
        if (config.isMethods()) {
            for (Method method : cl.getDeclaredMethods()) {
                String name = method.getName();
                if (method.getParameterTypes().length == 0
                    && !Modifier.isStatic(method.getModifiers())
                    && !method.isBridge()
                    && ((name.startsWith("get") && name.length() > 3)
                     || (name.startsWith("is") && name.length() > 2))) {
                    String propertyName;
                    if (name.startsWith("get")) {
                        propertyName = BeanUtils.uncapitalize(name.substring(3));
                    } else {
                        propertyName = BeanUtils.uncapitalize(name.substring(2));
                    }
                    Type propertyType = getPropertyType(cl, method, method.getReturnType(), method.getGenericReturnType());
                    if (!types.containsKey(propertyName) || !useFieldTypes) {
                        types.put(propertyName, propertyType);
                    }
                    Annotations ann = annotations.get(propertyName);
                    if (ann == null) {
                        ann = new Annotations();
                        annotations.put(propertyName, ann);
                    }
                    ann.addAnnotations(method);
                }
            }
        }

        for (Map.Entry<String, Type> entry : types.entrySet()) {
            Annotations ann = annotations.get(entry.getKey());
            Property property = createProperty(type, entry.getKey(), entry.getValue(), ann);
            if (property != null) {
                type.addProperty(property);
            }
        }
    }
Export the given classes

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