Source:
private static Object getListValue(Class<?> beanClass, Type parameterType, Class<?> parameterClass, Config config, String configPropName) { Type elementType = ((ParameterizedType)parameterType).getActualTypeArguments()[0]; if (elementType == Boolean.class) { return config.getBooleanList(configPropName); } else if (elementType == Integer.class) { return config.getIntList(configPropName); } else if (elementType == Double.class) { return config.getDoubleList(configPropName); } else if (elementType == Long.class) { return config.getLongList(configPropName); } else if (elementType == String.class) { return config.getStringList(configPropName); } else if (elementType == Duration.class) { return config.getDurationList(configPropName); } else if (elementType == ConfigMemorySize.class) { return config.getMemorySizeList(configPropName); } else if (elementType == Object.class) { return config.getAnyRefList(configPropName); } else if (elementType == Config.class) { return config.getConfigList(configPropName); } else if (elementType == ConfigObject.class) { return config.getObjectList(configPropName); } else if (elementType == ConfigValue.class) { return config.getList(configPropName); } else if (hasAtLeastOneBeanProperty((Class<?>) elementType)) { List<Object> beanList = new ArrayList<Object>(); List<? extends Config> configList = config.getConfigList(configPropName); for (Config listMember : configList) { beanList.add(createInternal(listMember, (Class<?>) elementType)); } return beanList; } else if (((Class<?>) elementType).isEnum()) { List<String> names = config.getStringList(configPropName); List<Enum<?>> enumList = new ArrayList<Enum<?>>(); for (String name : names) { enumList.add(Enum.valueOf((Class<Enum>) elementType, name)); } return enumList; } else { throw new ConfigException.BadBean("Bean property '" + configPropName + "' of class " + beanClass.getName() + " has unsupported list element type " + elementType); } }

Target:
private static Object getListValue(Class<?> beanClass, Type parameterType, Class<?> parameterClass, Config config, String configPropName) { Type elementType = ((ParameterizedType)parameterType).getActualTypeArguments()[0]; if (elementType == Boolean.class) { return config.getBooleanList(configPropName); } else if (elementType == Integer.class) { return config.getIntList(configPropName); } else if (elementType == Double.class) { return config.getDoubleList(configPropName); } else if (elementType == Long.class) { return config.getLongList(configPropName); } else if (elementType == String.class) { return config.getStringList(configPropName); } else if (elementType == Duration.class) { return config.getDurationList(configPropName); } else if (elementType == ConfigMemorySize.class) { return config.getMemorySizeList(configPropName); } else if (elementType == Object.class) { return config.getAnyRefList(configPropName); } else if (elementType == Config.class) { return config.getConfigList(configPropName); } else if (elementType == ConfigObject.class) { return config.getObjectList(configPropName); } else if (elementType == ConfigValue.class) { return config.getList(configPropName); } else if (((Class<?>) elementType).isEnum()) { @SuppressWarnings("unchecked") List<Enum> enumValues = config.getEnumList((Class<Enum>) elementType, configPropName); return enumValues; } else if (hasAtLeastOneBeanProperty((Class<?>) elementType)) { List<Object> beanList = new ArrayList<Object>(); List<? extends Config> configList = config.getConfigList(configPropName); for (Config listMember : configList) { beanList.add(createInternal(listMember, (Class<?>) elementType)); } return beanList; } else { throw new ConfigException.BadBean("Bean property '" + configPropName + "' of class " + beanClass.getName() + " has unsupported list element type " + elementType); } }