@Test
  void parameterizedHeaderExpandApiBaseClass() throws Exception {
    final List<MethodMetadata> mds =
        contract.parseAndValidateMetadata(ParameterizedHeaderExpandInheritedApi.class);

    final Map<String, MethodMetadata> byConfigKey = new LinkedHashMap<>();
    for (final MethodMetadata m : mds) {
      byConfigKey.put(m.configKey(), m);
    }

    assertThat(byConfigKey)
        .containsOnlyKeys(
            "ParameterizedHeaderExpandInheritedApi#getZoneAccept(String,String)",
            "ParameterizedHeaderExpandInheritedApi#getZone(String,String)");

    MethodMetadata md =
        byConfigKey.get("ParameterizedHeaderExpandInheritedApi#getZoneAccept(String,String)");
    assertThat(md.returnType()).isEqualTo(String.class);
    assertThat(md.template())
        .hasHeaders(
            entry("Authorization", asList("{authHdr}")),
            entry("Accept", asList("application/json")));
    // Ensure that the authHdr expansion was properly detected and did not create a
    // formParam
    assertThat(md.formParams()).isEmpty();

    md = byConfigKey.get("ParameterizedHeaderExpandInheritedApi#getZone(String,String)");
    assertThat(md.returnType()).isEqualTo(String.class);
    assertThat(md.template()).hasHeaders(entry("Authorization", asList("{authHdr}")));
    assertThat(md.formParams()).isEmpty();
  }
Body type is only for the body param.
core/src/test/java/feign/DefaultContractTest.java