// Path: tenacity-core/src/main/java/com/yammer/tenacity/core/http/TenacityJerseyClientBuilder.java
// public class TenacityJerseyClientBuilder {
//     protected final TenacityPropertyKey tenacityPropertyKey;
//     //50ms by default, because with lower values we have seen issues with it racing with Tenacity/Hystrix's timeout
//     protected Duration timeoutPadding = Duration.milliseconds(50);
// 
//     private TenacityJerseyClientBuilder(TenacityPropertyKey tenacityPropertyKey) {
//         this.tenacityPropertyKey = tenacityPropertyKey;
//     }
// 
//     public TenacityJerseyClientBuilder usingTimeoutPadding(Duration timeoutPadding) {
//         this.timeoutPadding = timeoutPadding;
//         return this;
//     }
// 
//     public Client build(Client client) {
//         return new TenacityJerseyClient(
//                 client,
//                 tenacityPropertyKey,
//                 timeoutPadding
//         );
//     }
// 
//     public static TenacityJerseyClientBuilder builder(TenacityPropertyKey key) {
//         return new TenacityJerseyClientBuilder(key);
//     }
// }
// 
// Path: tenacity-core/src/main/java/com/yammer/tenacity/core/properties/TenacityPropertyKey.java
// public interface TenacityPropertyKey extends HystrixCommandKey, HystrixThreadPoolKey {
//     default Predicate<TenacityPropertyKey> isEqualPredicate() {
//         return (value) -> value.name().equals(name());
//     }
// 
//     default TenacityPropertyKey validate(Collection<TenacityPropertyKey> keys) {
//         return keys.stream()
//                 .filter(isEqualPredicate())
//                 .findAny()
//                 .orElseThrow(() -> new NoSuchElementException("No TenacityPropertyKey " + name()));
//     }
// }


import com.yammer.tenacity.core.http.TenacityJerseyClientBuilder;
import com.yammer.tenacity.core.properties.TenacityPropertyKey;
import io.dropwizard.client.JerseyClientBuilder;
import io.dropwizard.client.JerseyClientConfiguration;
import io.dropwizard.setup.Environment;
import javax.ws.rs.client.Client;
package com.yammer.tenacity.client;



public class TenacityClientBuilder {
    protected JerseyClientConfiguration jerseyConfiguration = new JerseyClientConfiguration();
    protected final Environment environment;
    protected final TenacityPropertyKey tenacityPropertyKey;

    public TenacityClientBuilder(Environment environment,
                                 TenacityPropertyKey tenacityPropertyKey) {
// Path: tenacity-core/src/main/java/com/yammer/tenacity/core/http/TenacityJerseyClientBuilder.java
// public class TenacityJerseyClientBuilder {
//     protected final TenacityPropertyKey tenacityPropertyKey;
//     //50ms by default, because with lower values we have seen issues with it racing with Tenacity/Hystrix's timeout
//     protected Duration timeoutPadding = Duration.milliseconds(50);
// 
//     private TenacityJerseyClientBuilder(TenacityPropertyKey tenacityPropertyKey) {
//         this.tenacityPropertyKey = tenacityPropertyKey;
//     }
// 
//     public TenacityJerseyClientBuilder usingTimeoutPadding(Duration timeoutPadding) {
//         this.timeoutPadding = timeoutPadding;
//         return this;
//     }
// 
//     public Client build(Client client) {
//         return new TenacityJerseyClient(
//                 client,
//                 tenacityPropertyKey,
//                 timeoutPadding
//         );
//     }
// 
//     public static TenacityJerseyClientBuilder builder(TenacityPropertyKey key) {
//         return new TenacityJerseyClientBuilder(key);
//     }
// }
// 
// Path: tenacity-core/src/main/java/com/yammer/tenacity/core/properties/TenacityPropertyKey.java
// public interface TenacityPropertyKey extends HystrixCommandKey, HystrixThreadPoolKey {
//     default Predicate<TenacityPropertyKey> isEqualPredicate() {
//         return (value) -> value.name().equals(name());
//     }
// 
//     default TenacityPropertyKey validate(Collection<TenacityPropertyKey> keys) {
//         return keys.stream()
//                 .filter(isEqualPredicate())
//                 .findAny()
//                 .orElseThrow(() -> new NoSuchElementException("No TenacityPropertyKey " + name()));
//     }
// }


// Path: tenacity-client/src/main/java/com/yammer/tenacity/client/TenacityClientBuilder.java
import com.yammer.tenacity.core.http.TenacityJerseyClientBuilder;
import com.yammer.tenacity.core.properties.TenacityPropertyKey;
import io.dropwizard.client.JerseyClientBuilder;
import io.dropwizard.client.JerseyClientConfiguration;
import io.dropwizard.setup.Environment;
import javax.ws.rs.client.Client;

package com.yammer.tenacity.client;



public class TenacityClientBuilder {
    protected JerseyClientConfiguration jerseyConfiguration = new JerseyClientConfiguration();
    protected final Environment environment;
    protected final TenacityPropertyKey tenacityPropertyKey;

    public TenacityClientBuilder(Environment environment,
                                 TenacityPropertyKey tenacityPropertyKey) {
        this.environment = environment;