@Test void niceErrorOnNull_tagValue() {
    Throwable exception = assertThrows(IllegalArgumentException.class, () -> {

      String json = """
        {
          "traceId": "6b221d5bc9e6496c",
          "name": "get-traces",
          "id": "6b221d5bc9e6496c",
          "tags": {
            "foo": NULL
          }
        }
        """;

      SpanBytesDecoder.JSON_V2.decodeOne(json.getBytes(UTF_8));
    });
    assertThat(exception.getMessage()).contains("No value at $.tags.foo");
  }
Particular, thrift can mistake malformed content as a huge list. Let's not blow up.
zipkin/src/test/java/zipkin2/codec/SpanBytesDecoderTest.java