private static void ensureServerAddr(Span span, zipkin.Span.Builder zipkinSpan, Endpoint ep) {
   String serviceName =
       span.tags().containsKey(Span.SPAN_PEER_SERVICE_TAG_NAME)
           ? span.tags().get(Span.SPAN_PEER_SERVICE_TAG_NAME)
           : ep.serviceName;
   Endpoint endpoint =
       ep.port == null
           ? Endpoint.create(serviceName, ep.ipv4)
           : Endpoint.create(serviceName, ep.ipv4, ep.port);
   zipkinSpan.addBinaryAnnotation(BinaryAnnotation.address(Constants.SERVER_ADDR, endpoint));
 }
 private static boolean hasClientSend(Span span) {
   for (org.springframework.cloud.sleuth.Log log : span.logs()) {
     if (Constants.CLIENT_SEND.equals(log.getEvent())) {
       return !span.tags().containsKey(Constants.SERVER_ADDR);
     }
   }
   return false;
 }
 private static void ensureLocalComponent(Span span, Builder zipkinSpan, Endpoint ep) {
   if (span.tags().containsKey(Constants.LOCAL_COMPONENT)) {
     return;
   }
   String processId =
       span.getProcessId() != null
           ? span.getProcessId().toLowerCase()
           : ZipkinMessageListener.UNKNOWN_PROCESS_ID;
   zipkinSpan.addBinaryAnnotation(
       BinaryAnnotation.create(Constants.LOCAL_COMPONENT, processId, ep));
 }