@Override
      public Annotation fromJson(JsonReader reader) throws IOException {
        reader.beginObject();
        Long timestamp = null;
        String value = null;
        while (reader.hasNext()) {
          switch (reader.nextName()) {
            case "timestamp":
              timestamp = reader.nextLong();
              break;
            case "value":
              value = reader.nextString();
              break;
            default:
              reader.skipValue();
          }
        }
        reader.endObject();
        if (timestamp == null || value == null) {
          throw new IllegalStateException("Incomplete annotation at " + reader.getPath());
        }
        return Annotation.create(timestamp, value);
      }
Read-only json adapters resurrected from before we switched to Java 6 as storage components can
be Java 7+
benchmarks/src/test/java/zipkin2/codec/MoshiSpanDecoder.java