+ if (values != null) {
+ return (List<Object>)values.invoke(obj);
+ }
+ else if (getValueType().isEnum()) {
+ Object[] enumConstants = getValueType().getEnumConstants();
+ List<Object> result = new ArrayList<>(enumConstants.length);
+ for (Object c : enumConstants)
+ result.add(c);
+ return result;
+ }
+ else {
+ throw new IllegalStateException("No value list defined for " + getter.toString());
+ }
+ }
+
+ @Override
+ public Class<?> getValueType() {
+ return getter.getReturnType();