// Formatted problems:
//
// pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart:15:12: Error: Generic type 'LinkedListEntry' can't be used without type arguments in a type variable bound.
// Try providing type arguments to 'LinkedListEntry' here.
// class Hest<X extends LinkedListEntry> {}
//            ^
//
// pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart:15:12: Error: Type argument 'LinkedListEntry<dynamic>' doesn't conform to the bound 'LinkedListEntry<E>' of the type variable 'E' on 'LinkedListEntry'.
//  - 'LinkedListEntry' is from 'dart:collection'.
// Try changing type arguments so that they conform to the bounds.
// class Hest<X extends LinkedListEntry> {}
//            ^

// Unhandled errors:
//
// pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart:15:12: Error: Generic type 'LinkedListEntry' can't be used without type arguments in a type variable bound.
// Try providing type arguments to 'LinkedListEntry' here.
// class Hest<X extends LinkedListEntry> {}
//            ^
//
// pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart:15:12: Error: Type argument 'LinkedListEntry<dynamic>' doesn't conform to the bound 'LinkedListEntry<E>' of the type variable 'E' on 'LinkedListEntry'.
//  - 'LinkedListEntry' is from 'dart:collection'.
// Try changing type arguments so that they conform to the bounds.
// class Hest<X extends LinkedListEntry> {}
//            ^

library;
import self as self;
import "dart:collection" as col;
import "dart:core" as core;

class Hest<X extends col::LinkedListEntry<col::LinkedListEntry<dynamic>> = dynamic> extends core::Object {
  synthetic constructor •() → self::Hest<self::Hest::X>
    : super core::Object::•()
    ;
}
static method main() → dynamic {}
