// Copyright (c) 2020, 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: A:A<T>,Object*/
class A<T> {
  /*member: A.member:T Function()*/
  T member() => throw "Unreachable";
}

/*class: B:A<T>,B<T>,Object*/
/*member: B.member:T Function()*/
class B<T> extends A<T> {}

/*class: D0:A<Object?>,B<Object?>,D0,Object*/
/*member: D0.member:Object? Function()*/
class D0 extends A<dynamic> implements B<Object?> {}

/*class: D1:A<Object?>,B<dynamic>,D1,Object*/
/*member: D1.member:Object? Function()*/
class D1 extends A<Object?> implements B<dynamic> {}

/*class: D2:A<Object?>,B<Object?>,D2,Object*/
/*member: D2.member:Object? Function()*/
class D2 extends A<void> implements B<Object?> {}

/*class: D3:A<Object?>,B<void>,D3,Object*/
/*member: D3.member:Object? Function()*/
class D3 extends A<Object?> implements B<void> {}

/*class: D4:A<Object?>,B<dynamic>,D4,Object*/
/*member: D4.member:Object? Function()*/
class D4 extends A<void> implements B<dynamic> {}

/*class: D5:A<Object?>,B<void>,D5,Object*/
/*member: D5.member:Object? Function()*/
class D5 extends A<dynamic> implements B<void> {}

/*class: D6:A<void>,B<void>,D6,Object*/
/*member: D6.member:void Function()*/
class D6 extends A<void> implements B<void> {}

/*class: D7:A<dynamic>,B<dynamic>,D7,Object*/
/*member: D7.member:dynamic Function()*/
class D7 extends A<dynamic> implements B<dynamic> {}
