private static void setValue(String name, JsonNode node, Object obj, Map<String, List<Method>> setters) throws ReflectiveOperationException {
        List<Method> mySetters = setters.get(name);
        if (mySetters == null || mySetters.size() == 0) {
            throw new IllegalArgumentException("can't find any setter for " + name);
        }
        if (node.isNull()) {
            setNull(name, node, obj, mySetters);
        } else if (node.isNumber()) {
            setNumericValue(name, node, obj, mySetters);
        } else if (node.isTextual()) {
            setStringValue(name, node.asText(), obj, mySetters);
        } else if (node.isArray()) {
            setArray(name, node, obj, mySetters);
        } else if (node.isObject()) {
            setObject(name, node, obj, mySetters);
        } else if (node.isBoolean()) {
            setBoolean(name, node, obj, mySetters);
        }
    }
See the notes @link{TikaJsonSerializer}.
<p>
This currently requires a setString() option on objects that have enum parameters.
tika-serialization/src/main/java/org/apache/tika/serialization/TikaJsonDeserializer.java