| // Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file | 
 | // for details. All rights reserved. Use of this source code is governed by a | 
 | // BSD-style license that can be found in the LICENSE file. | 
 |  | 
 | class A1 {} | 
 |  | 
 | extension A2 on A1 { | 
 |   A1 method1() { | 
 |     return this; | 
 |   } | 
 |  | 
 |   A1 method2<T>(T o) { | 
 |     print(o); | 
 |     return this; | 
 |   } | 
 |  | 
 |   A1 method3<T>([T? o]) { | 
 |     print(o); | 
 |     return this; | 
 |   } | 
 |  | 
 |   A1 method4<T>({T? o}) { | 
 |     print(o); | 
 |     return this; | 
 |   } | 
 | } | 
 |  | 
 | class B1<T> {} | 
 |  | 
 | extension B2<T> on B1<T> { | 
 |   B1<T> method1() { | 
 |     return this; | 
 |   } | 
 |  | 
 |   B1<T> method2<S>(S o) { | 
 |     print(o); | 
 |     return this; | 
 |   } | 
 | } | 
 |  | 
 | main() {} |