in src/main/java/org/apache/commons/configuration2/convert/AbstractListDelimiterHandler.java [42:65]
static Collection<?> flatten(final ListDelimiterHandler handler, final Object value, final int limit, final Set<Object> dejaVu) {
dejaVu.add(value);
if (value instanceof String) {
return handler.split((String) value, true);
}
final Collection<Object> result = new LinkedList<>();
if (value instanceof Path) {
// Don't handle as an Iterable.
result.add(value);
} else if (value instanceof Iterable) {
flattenIterator(handler, result, ((Iterable<?>) value).iterator(), limit, dejaVu);
} else if (value instanceof Iterator) {
flattenIterator(handler, result, (Iterator<?>) value, limit, dejaVu);
} 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(handler.flatten(Array.get(value, idx), limit - size));
}
} else {
result.add(value);
}
}
return result;
}