library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/error_recovery/annotations.dart:15:16: Error: Type arguments can't have annotations because they aren't declarations.
//   m() => new A<@annotation @Annotation("test") C>();
//                ^^^^^^^^^^^
//
// pkg/front_end/testcases/general/error_recovery/annotations.dart:15:28: Error: Type arguments can't have annotations because they aren't declarations.
//   m() => new A<@annotation @Annotation("test") C>();
//                            ^^^^^^^^^^^^^^^^^^^
//
import self as self;
import "dart:core" as core;

class Annotation extends core::Object /*hasConstConstructor*/  {
  final field core::String message;
  const constructor •(core::String message) → self::Annotation
    : self::Annotation::message = message, super core::Object::•()
    ;
}
class A<E extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::A<self::A::E%>
    : super core::Object::•()
    ;
}
class C extends core::Object {
  synthetic constructor •() → self::C
    : super core::Object::•()
    ;
  method m() → dynamic
    return new self::A::•<self::C>();
}
static const field dynamic annotation = #C1;
static method main() → dynamic {}

constants  {
  #C1 = null
}
