in bval-jsr/src/main/java/org/apache/bval/util/reflection/TypeUtils.java [1519:1529]
private static String wildcardTypeToString(final WildcardType w) {
final StringBuilder buf = new StringBuilder().append('?');
final Type[] lowerBounds = w.getLowerBounds();
final Type[] upperBounds = w.getUpperBounds();
if (lowerBounds.length > 1 || lowerBounds.length == 1 && lowerBounds[0] != null) {
appendAllTo(buf.append(" super "), " & ", lowerBounds);
} else if (upperBounds.length > 1 || upperBounds.length == 1 && !Object.class.equals(upperBounds[0])) {
appendAllTo(buf.append(" extends "), " & ", upperBounds);
}
return buf.toString();
}