public String[] listRequirement(String choice) {
        final ArrayList<String> result = new ArrayList<String>();
        Field field;
        try {
            field = getEnumType().getField(choice);
            final Annotation[] annotations = field.getAnnotations();
            Method[] methods = null;
            Class<? extends Annotation> annotationType = null;
            for ( Annotation annotation : annotations ) {
                annotationType = annotation.annotationType();
                methods = annotationType.getMethods();
                for ( Method method : methods ) {
                    Class<?> type = method.getReturnType();
                    if ( !type.equals(String.class) ) {
                        continue;
                    }
                    try {
                        final String annoValue = (String) method.invoke(annotation);
                        if ( !annoValue.startsWith("${") ) {
                            continue;
                        }
                        result.add(annoValue);
                    } catch (Exception ex) {
                        handleException(ex);
                    }
                }
            }
        } catch (Exception e) {
            handleException(e);
        }
        return result.toArray(new String[0]);
    }