@Override
public Optional<Errors> extract(ObjectNode node) {
if (node.has("errors")) {
//extract stuff
JsonNode n = node.get("errors");
Stream<Map.Entry<String, JsonNode>> stream = stream(spliteratorUnknownSize(n.fields(), Spliterator.ORDERED), false);
Map<String, List<Error>> errors = stream.map(e -> {
List<Error> list = stream(e.getValue().spliterator(), false).map(elem -> factory.createError((ObjectNode) elem)).collect(toList());
return new AbstractMap.SimpleImmutableEntry<>(e.getKey(), list);
}).collect(toMap(Map.Entry::getKey, Map.Entry::getValue));
return Optional.of(new Errors(errors));