// TODO I'm creating a new object mapper here because my original mapper has an instance of the deserializer
// associated with it. Therefore, if I try to read the value using codec, I'll get an infinite loop (it'll come
// back here).
ObjectMapper mapper = new ObjectMapper();
Teacher teacher = mapper.readValue(node, Teacher.class);
// Apply nested properties by hand
JsonNode nameNode = node.get("name");
teacher.setFirstName(nameNode.get("first").getTextValue());
teacher.setMiddleInitial(nameNode.get("middle").getTextValue());
teacher.setLastName(nameNode.get("last").getTextValue());
return teacher;
}