code: @Override
      public Node deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
          JsonNode root = jsonParser.getCodec().readTree(jsonParser);
          Iterator<String> fieldNames = root.fieldNames();
          if (fieldNames.hasNext()) {
              String fieldKey = fieldNames.next();
              JsonNode fieldJson = root.get(fieldKey);
              return parseField(fieldKey, fieldJson); //only expecting one root node
          }
          return null;
      }
docs: {"or":{"children":[{"and":{"children":[{"eq":{"term":"k1","type":"string","value":"v1"}},{"neq":{"term":"k2","type":"ipv4","value":"1.2.3.4"}}]}},{"and":{"children":[{"eq":{"term":"k3","type":"integer","value":"1234"}}]}}]}}