static Collection flatten()

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