| extension type ET1(int i) { |
| ET1? operator +(ET1? i) => i; |
| int get getter => i; |
| int operator -() => i; |
| int operator [](int index) => i; |
| void foo(int i) {} |
| void operator []=(int index, int value) {} |
| void set setter(int value) {} |
| } |
| |
| extension type ET2<T>(T t) { |
| ET2<T>? operator +(ET2<T>? t) => t; |
| T get getter => t; |
| T operator -() => t; |
| T operator [](int index) => t; |
| void foo(T t) {} |
| void operator []=(int index, T value) {} |
| void set setter(T value) {} |
| } |
| |
| method1(ET1 et) {} |
| |
| method10<S, U extends ET2<S>?, V extends U>(S s, V et) {} |
| |
| method2(ET1? et) {} |
| |
| method3<S>(S s, ET2<S> et) {} |
| |
| method4<S>(S s, ET2<S>? et) {} |
| |
| method5<S, U extends ET2<S>>(S s, U et) {} |
| |
| method6<S, U extends ET2<S>>(S s, U? et) {} |
| |
| method7<S, U extends ET2<S>, V extends U>(S s, V et) {} |
| |
| method8<S, U extends ET2<S>, V extends U>(S s, V? et) {} |
| |
| method9<S, U extends ET2<S>, V extends U?>(S s, V et) {} |