@Override Endpoint readValue(ReadBuffer buffer, int length) {
      int endPos = buffer.pos() + length;

      // now, we are in the endpoint fields
      Endpoint.Builder builder = Endpoint.newBuilder();
      while (buffer.pos() < endPos) {
        int nextKey = buffer.readVarint32();
        switch (nextKey) {
          case SERVICE_NAME_KEY:
            builder.serviceName(SERVICE_NAME.readLengthPrefixAndValue(buffer));
            break;
          case IPV4_KEY:
            builder.parseIp(IPV4.readLengthPrefixAndValue(buffer));
            break;
          case IPV6_KEY:
            builder.parseIp(IPV6.readLengthPrefixAndValue(buffer));
            break;
          case PORT_KEY:
            builder.port(buffer.readVarint32());
            break;
          default:
            logAndSkip(buffer, nextKey);
        }
      }
      return builder.build();
    }
This is the only field in the ListOfSpans type
zipkin/src/main/java/zipkin2/internal/Proto3ZipkinFields.java