private static List<String> signature(Class<?> type) {
        assertThat(type).isInterface();
        return Arrays.stream(type.getMethods())
                     .filter(m -> {
                         final String methodName = m.getName();
                         // Ignore the methods only available in HttpHeaderGetters or HttpHeadersBuilder.
                         if ("endOfStream".equals(methodName) ||
                             "isEndOfStream".equals(methodName) ||
                             "contentLength".equals(methodName) ||
                             "isContentLengthUnknown".equals(methodName) ||
                             "contentLengthUnknown".equals(methodName) ||
                             "contentType".equals(methodName) ||
                             "contentDisposition".equals(methodName)) {
                             return false;
                         }

                         // Ignore the methods only available in QueryParamGetters
                         if ("toQueryString".equals(methodName) ||
                             "appendQueryString".equals(methodName)) {
                             return false;
                         }

                         // Ignore the build() method.
                         return !"build".equals(methodName);
                     })
                     .map(StringMultimapDerivedApiConsistencyTest::signature)
                     .distinct()
                     .sorted()
                     .collect(toImmutableList());
    }
Makes sure that {@link QueryParamGetters}, {@link QueryParamsBuilder}, {@link HttpHeaderGetters} and
{@link HttpHeadersBuilder} have a consistent set of getter and setter methods. This test prevents devs
from adding a new method to only one of them. Keep in mind that you must:
<ol>
  <li>Add a new method to {@link StringMultimap} and {@link StringMultimapGetters} first.</li>
  <li>Override the new method and add Javadoc in {@link QueryParamGetters} and
      {@link HttpHeaderGetters}.</li>
  <li>Add the new method's corresponding builder methods to both {@link QueryParamsBuilder} and
      {@link HttpHeadersBuilder}.</li>
</ol>
core/src/test/java/com/linecorp/armeria/common/StringMultimapDerivedApiConsistencyTest.java