class JsonParser {

    public static <T> List<T> parseArray(Supplier<T> supplier, BiConsumer<T, JsonNode> consumer, JsonNode jsonNode) {
        List<T> res = new ArrayList<>();
        for (JsonNode node : jsonNode) {
            T parse = parse(supplier, node);
            consumer.accept(parse, node);
            res.add(parse);
        }
        return res;
    }

    public static <T> T parse(Supplier<T> supplier, JsonNode jsonNode) {<FILL_FUNCTION_BODY>}
}

        T t = supplier.get();
        ReflectionUtils.doWithFields(t.getClass(), field -> {
            ReflectionUtils.makeAccessible(field);
            String v = Optional.ofNullable(jsonNode.get(field.getName())).map(JsonNode::asText).orElse(null);
            field.set(t, v);
        }, f -> f.getType() == String.class);
        return t;
    
<no_super_class>