@Override
    public String toString() {
      if (lowerBound != null) {
        return "? super " + typeToString(lowerBound);
      }
      if (upperBound == Object.class) {
        return "?";
      }
      return "? extends " + typeToString(upperBound);
    }
The WildcardType interface supports multiple upper bounds and multiple lower bounds. We only
support what the Java 6 language needs - at most one bound. If a lower bound is set, the upper
bound must be Object.class.
core/src/main/java/feign/Types.java