default Collection flatten()

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;
    }