private void processObject(final ProcessingReport report,
final FullData input)
throws ProcessingException
{
final SchemaTree tree = input.getSchema();
final JsonTree instance = input.getInstance();
final JsonNode schema = tree.getNode();
final JsonNode node = instance.getNode();
final JsonNode digest = ObjectSchemaDigester.getInstance()
.digest(schema);
final ObjectSchemaSelector selector = new ObjectSchemaSelector(digest);
final List<String> fields = Lists.newArrayList(node.fieldNames());
Collections.sort(fields);
FullData data;
JsonTree newInstance;
for (final String field: fields) {
newInstance = instance.append(JsonPointer.of(field));
data = input.withInstance(newInstance);
for (final JsonPointer ptr: selector.selectSchemas(field)) {
data = data.withSchema(tree.append(ptr));
process(report, data);
}
}
}