@Test void endpoint_sizeInBytes() {
    EndpointField field = new EndpointField(1 << 3 | WIRETYPE_LENGTH_DELIMITED);

    assertThat(field.sizeInBytes(Endpoint.newBuilder()
      .serviceName("12345678")
      .ip("192.168.99.101")
      .ip("2001:db8::c001")
      .port(80)
      .build()))
      .isEqualTo(0
        + 1 /* tag of servicename field */ + 1 /* len */ + 8 // 12345678
        + 1 /* tag of ipv4 field */ + 1 /* len */ + 4 // octets in ipv4
        + 1 /* tag of ipv6 field */ + 1 /* len */ + 16 // octets in ipv6
        + 1 /* tag of port field */ + 1 /* small varint */
        + 1 /* tag of endpoint field */ + 1 /* len */
      );
  }
A map entry is an embedded messages: one for field the key and one for the value
zipkin/src/test/java/zipkin2/internal/Proto3ZipkinFieldsTest.java