library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/instantiate_to_bound/non_simple_for_each.dart:11:12: Error: Generic type 'Hest' can't be used without type arguments in a type variable bound.
// Try providing type arguments to 'Hest' here.
// class Fisk<TypeY extends Hest, TypeZ extends Hest> {}
//            ^^^^^
// pkg/front_end/testcases/instantiate_to_bound/non_simple_for_each.dart:9:12: Context: Bound of this variable references variable 'TypeX' from the same declaration.
// class Hest<TypeX extends Hest<TypeX>> {}
//            ^^^^^
//
// pkg/front_end/testcases/instantiate_to_bound/non_simple_for_each.dart:11:32: Error: Generic type 'Hest' can't be used without type arguments in a type variable bound.
// Try providing type arguments to 'Hest' here.
// class Fisk<TypeY extends Hest, TypeZ extends Hest> {}
//                                ^^^^^
// pkg/front_end/testcases/instantiate_to_bound/non_simple_for_each.dart:9:12: Context: Bound of this variable references variable 'TypeX' from the same declaration.
// class Hest<TypeX extends Hest<TypeX>> {}
//            ^^^^^
//
import self as self;
import "dart:core" as core;

class Hest<TypeX extends self::Hest<self::Hest::TypeX> = self::Hest<dynamic>> extends core::Object {
  synthetic constructor •() → self::Hest<self::Hest::TypeX>
    ;
}
class Fisk<TypeY extends self::Hest<self::Hest<dynamic>> = dynamic, TypeZ extends self::Hest<self::Hest<dynamic>> = dynamic> extends core::Object {
  synthetic constructor •() → self::Fisk<self::Fisk::TypeY, self::Fisk::TypeZ>
    ;
}
static method main() → dynamic
  ;
