private <E extends Enum<E>> Enum<E>[] getValues(Class<E> enumClass) {
        @SuppressWarnings("unchecked") // Class<E> -> E[]
        Enum<E>[] values = (Enum<E>[]) this.values.get(enumClass);
        if (values == null) {
            values = enumClass.getEnumConstants();
            this.values.put(enumClass, values);
        }
        return values;
    }
{@code NumberConversions} ensures that the results of a projection involving numeric expressions
conform to the types of the numeric expressions

@author tiwe

@param <T>
querydsl-core/src/main/java/com/querydsl/core/support/NumberConversions.java