private List<Field> initFields(Map<String, ? extends Expression<?>> args) {
        List<Field> fields = new ArrayList<Field>(args.size());
        for (Map.Entry<String,? extends Expression<?>> entry : args.entrySet()) {
            String property = entry.getKey();
            Expression<?> expr = entry.getValue();
            Class<?> beanType = getType();
            Field field = null;
            while (!beanType.equals(Object.class)) {
                try {
                    field = beanType.getDeclaredField(property);
                    field.setAccessible(true);
                    if (!isAssignableFrom(field.getType(), expr.getType())) {
                        typeMismatch(field.getType(), expr);
                    }
                    beanType = Object.class;
                } catch (SecurityException e) {
                    // do nothing
                } catch (NoSuchFieldException e) {
                    beanType = beanType.getSuperclass();
                }
            }
            if (field == null) {
                propertyNotFound(expr, property);
            }
            fields.add(field);
        }
        return fields;
    }
Create a new QBean instance

@param type type of bean
@param fieldAccess true, for field access and false, for property access
@param bindings bindings
querydsl-core/src/main/java/com/querydsl/core/types/QBean.java