public String[] values() {
        final ArrayList<String> result = new ArrayList<String>();
        try {
            final Method method = getEnumType().getMethod("values");
            Object[] values = (Object[]) method.invoke(getEnumType());
            for ( Object o : values ) {
                Enum<?> e = (Enum<?>) o;
                result.add(e.name());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result.toArray(new String[0]);
    }