@Override
 public CloseableHttpResponse execute(final HttpHost target, final HttpRequest request)
     throws IOException, ClientProtocolException {
   return HttpClientTracing.execute(
       target.toURI().toString(),
       traceHeaderName,
       request,
       new HttpClientTracing.Executor<CloseableHttpResponse>() {
         @Override
         public CloseableHttpResponse execute() throws IOException {
           return client.execute(target, request);
         }
       });
 }
 @Override
 public <T> T execute(
     final HttpUriRequest request, final ResponseHandler<? extends T> responseHandler)
     throws IOException, ClientProtocolException {
   return HttpClientTracing.execute(
       request.getURI().toString(),
       traceHeaderName,
       request,
       new HttpClientTracing.Executor<T>() {
         @Override
         public T execute() throws IOException {
           return client.execute(request, responseHandler);
         }
       });
 }
 @Override
 public <T> T execute(
     final HttpHost target,
     final HttpRequest request,
     final ResponseHandler<? extends T> responseHandler,
     final HttpContext context)
     throws IOException, ClientProtocolException {
   return HttpClientTracing.execute(
       target.toURI().toString(),
       traceHeaderName,
       request,
       new HttpClientTracing.Executor<T>() {
         @Override
         public T execute() throws IOException {
           return client.execute(target, request, responseHandler, context);
         }
       });
 }