class B<T extends Interface1 & Interface2> {
T foo(){}
}
resulting signature for class head: <T::LInterface1;:LInterface2;>Ljava/lang/Object;
resulting signature for method: ()LInterface1;
"left most bound" is used for all usages of T in B!
needed checks: ensure Interface1 != Interface2
Description
example:
class B<T extends Interface1 & Interface2> {
T foo(){}
}
resulting signature for class head: <T::LInterface1;:LInterface2;>Ljava/lang/Object;
resulting signature for method: ()LInterface1;
"left most bound" is used for all usages of T in B!
needed checks: ensure Interface1 != Interface2