public static <C> AsyncBuilder<C> builder() {
    return new AsyncBuilder<>();
  }
@Test
  void equalsHashCodeAndToStringWork() {
    Target<TestInterfaceAsync> t1 =
        new HardCodedTarget<>(TestInterfaceAsync.class, "http://localhost:8080");
    Target<TestInterfaceAsync> t2 =
        new HardCodedTarget<>(TestInterfaceAsync.class, "http://localhost:8888");
    Target<OtherTestInterfaceAsync> t3 = new HardCodedTarget<>(OtherTestInterfaceAsync.class,
        "http://localhost:8080");
    TestInterfaceAsync i1 = AsyncFeign.builder().target(t1);
    TestInterfaceAsync i2 = AsyncFeign.builder().target(t1);
    TestInterfaceAsync i3 = AsyncFeign.builder().target(t2);
    OtherTestInterfaceAsync i4 = AsyncFeign.builder().target(t3);

    assertThat(i1).isEqualTo(i2).isNotEqualTo(i3).isNotEqualTo(i4);

    assertThat(i1.hashCode()).isEqualTo(i2.hashCode()).isNotEqualTo(i3.hashCode())
        .isNotEqualTo(i4.hashCode());

    assertThat(i1.toString()).isEqualTo(i2.toString()).isNotEqualTo(i3.toString())
        .isNotEqualTo(i4.toString());

    assertThat(t1).isNotEqualTo(i1);

    assertThat(t1.hashCode()).isEqualTo(i1.hashCode());

    assertThat(t1.toString()).isEqualTo(i1.toString());
  }