@Override public Optional<Iterable> convert(ArrayNode node, Class<Iterable> targetType, ConversionContext context) { Map<String, Argument<?>> typeVariables = context.getTypeVariables(); Class elementType = typeVariables.isEmpty() ? Map.class : typeVariables.values().iterator().next().getType(); List results = new ArrayList(); node.elements().forEachRemaining(jsonNode -> { Optional converted = conversionService.convert(jsonNode, elementType, context); if (converted.isPresent()) { results.add(converted.get()); } }); return Optional.of(results); } }