in src/main/java/org/apache/commons/configuration2/convert/ListDelimiterHandler.java [119:138]
default Collection<?> flatten(final Object value, final int limit) {
if (value instanceof String) {
return split((String) value, true);
}
final Collection<Object> result = new LinkedList<>();
if (value instanceof Iterable) {
AbstractListDelimiterHandler.flattenIterator(this, result, ((Iterable<?>) value).iterator(), limit);
} else if (value instanceof Iterator) {
AbstractListDelimiterHandler.flattenIterator(this, result, (Iterator<?>) value, limit);
} else if (value != null) {
if (value.getClass().isArray()) {
for (int len = Array.getLength(value), idx = 0, size = 0; idx < len && size < limit; idx++, size = result.size()) {
result.addAll(flatten(Array.get(value, idx), limit - size));
}
} else {
result.add(value);
}
}
return result;
}