library;
//
// Problems in library:
//
// pkg/front_end/testcases/general/final_class_declaration.dart:7:1: Error: The 'class-modifiers' language feature is disabled for this library.
// Try removing the `@dart=` annotation or setting the language version to 3.0 or higher.
// final class A {}
// ^^^^^
// pkg/front_end/testcases/general/final_class_declaration.dart:5:1: Context: This is the annotation that opts out this library from the 'class-modifiers' language feature.
// // @dart=2.19
// ^^^^^^^^^^^^^
//
// pkg/front_end/testcases/general/final_class_declaration.dart:9:10: Error: The 'class-modifiers' language feature is disabled for this library.
// Try removing the `@dart=` annotation or setting the language version to 3.0 or higher.
// abstract final class B {}
//          ^^^^^
// pkg/front_end/testcases/general/final_class_declaration.dart:5:1: Context: This is the annotation that opts out this library from the 'class-modifiers' language feature.
// // @dart=2.19
// ^^^^^^^^^^^^^
//
// pkg/front_end/testcases/general/final_class_declaration.dart:12:1: Error: The 'class-modifiers' language feature is disabled for this library.
// Try removing the `@dart=` annotation or setting the language version to 3.0 or higher.
// final class C = Object with M;
// ^^^^^
// pkg/front_end/testcases/general/final_class_declaration.dart:5:1: Context: This is the annotation that opts out this library from the 'class-modifiers' language feature.
// // @dart=2.19
// ^^^^^^^^^^^^^
//
import self as self;
import "dart:core" as core;

class A extends core::Object {
  synthetic constructor •() → self::A
    : super core::Object::•()
    ;
}
abstract class B extends core::Object {
  synthetic constructor •() → self::B
    : super core::Object::•()
    ;
}
abstract class M extends core::Object /*isMixinDeclaration*/  {
}
class C = core::Object with self::M /*hasConstConstructor*/  {
  const synthetic constructor •() → self::C
    : super core::Object::•()
    ;
}
