docs: @SuppressWarnings("SimplifiableIfStatement")
  	private boolean isMatchingType(JsonNode node, Class<?> type) {
  		if (node.isNull()) {
  			return true;
  		}
  		if (node.isTextual()) {
  			return String.class.isAssignableFrom(type);
  		}
  		if (node.isNumber()) {
  			return isNumericAssignable(type);
  		}
  		if (node.isArray() && type.isArray()) {
  			return node.size() > 0 && isMatchingType(node.get(0), type.getComponentType());
  		}
  		if (node.isArray()) {
  			return type.isArray() || Collection.class.isAssignableFrom(type);
  		}
  		if (node.isBinary()) {
  			return byteOrCharAssignable(type);
  		}
  		if (node.isBoolean()) {
  			return boolean.class.isAssignableFrom(type) || Boolean.class.isAssignableFrom(type);
  		}
  		if (node.isObject() || node.isPojo()) {
  			return !type.isPrimitive() && !String.class.isAssignableFrom(type) &&
  					!Number.class.isAssignableFrom(type) && !Boolean.class.isAssignableFrom(type);
  		}
  		return false;
  	}