private static int hashCodeOrZero(Object o) {
    return o != null ? o.hashCode() : 0;
  }
Returns the generic supertype for {@code supertype}. For example, given a class {@code
IntegerSet}, the result for when supertype is {@code Set.class} is {@code Set<Integer>} and the
result when the supertype is {@code Collection.class} is {@code Collection<Integer>}.
core/src/main/java/feign/Types.java