There is a specific syntax that has changed from JSR 14 to indicate common type boundaries.
variable_name:class_type_bound:interface_type_bounds
So for your example:
<T::Ljava/lang/Comparable<-TT;>;>
What will reflect:
<T extends Comparable<T>>
The name of the variable is T , there is no class type binding, so it was omitted, and there was an interface border of type Comparable<T> .
All your examples follow this, but there are many different forms:
<T:Ljava/lang/Object;>(Ljava/util/Collection<TT;>;)TT; <T::Ljava/lang/Comparable;>(Ljava/util/Collection<TT;>;)TT; <T:Ljava/lang/Object;:Ljava/lang/Comparable;(Ljava/util/Collection<TT;>;)TT;
A source
source share