| class MyModel<T> { | 
 |   MyModel(this.data); | 
 |   final T data; | 
 | } | 
 |  | 
 | class MyWidget extends StatefulWidget {} | 
 |  | 
 | class MyWidgetState1 extends State<MyWidget> with MyMixin<String, MyWidget> { | 
 |   void doSomething() {} | 
 | } | 
 |  | 
 | class MyWidgetState2 extends State<MyWidget> with MyMixinTypedef { | 
 |   void doSomething() {} | 
 | } | 
 |  | 
 | class State<T extends StatefulWidget> {} | 
 |  | 
 | class StatefulWidget {} | 
 |  | 
 | mixin MyMixin<T, W extends StatefulWidget> on State<W> { | 
 |   void listenToEvents(Stream<MyModel<T>> stream) {} | 
 | } | 
 |  | 
 | typedef MyMixinTypedef = MyMixin<String, MyWidget>; |