| class I1<X, Y> {} |
| class I2<X, Y, Z> {} |
| class A {} |
| class B extends A implements I1<int, int> { |
| void methodB() {} |
| void methodB2() {} |
| int get getterB => throw 42; |
| void set setterB(int value) {} |
| B operator *(B other) => throw 42; |
| } |
| class C extends B {} |
| class D extends C implements I2<int, int, int> { |
| void methodD() {} |
| int get getterD => throw 42; |
| void set setterD(int value) {} |
| D operator +(D other) => throw 42; |
| } |
| extension type E on D show C, I2<int, int, int>, methodD, get getterD, set setterD, operator + hide A, I1<int, int>, methodB, methodB2, get getterB, set setterB, operator * {} |
| main() {} |