public static Builder builder() {
    return new Builder();
  }
@Test
  void ensureRetryerClonesItself() throws Exception {
    server.enqueue(new MockResponse().setResponseCode(503).setBody("foo 1"));
    server.enqueue(new MockResponse().setResponseCode(200).setBody("foo 2"));
    server.enqueue(new MockResponse().setResponseCode(503).setBody("foo 3"));
    server.enqueue(new MockResponse().setResponseCode(200).setBody("foo 4"));

    MockRetryer retryer = new MockRetryer();

    TestInterface api = Feign.builder().retryer(retryer)
        .errorDecoder(
            (methodKey, response) -> new RetryableException(response.status(), "play it again sam!",
                HttpMethod.POST, NON_RETRYABLE, response.request()))
        .target(TestInterface.class, "http://localhost:" + server.getPort());

    api.post();
    api.post(); // if retryer instance was reused, this statement will throw an exception
    assertThat(server.getRequestCount()).isEqualTo(4);
  }