library;
//
// Problems in library:
//
// pkg/front_end/testcases/general/issue49357a.dart:13:33: Error: Can't find '}' to match '{'.
//     for (final element in list) {
//                                 ^
//
// pkg/front_end/testcases/general/issue49357a.dart:5:26: Error: Type 'B' not found.
// abstract class A extends B {
//                          ^
//
// pkg/front_end/testcases/general/issue49357a.dart:7:20: Error: The super constructor has no corresponding named parameter.
//     required super.field,
//                    ^
//
import self as self;
import "dart:core" as core;

abstract class A extends core::Object {
  constructor •({required invalid-type field}) → self::A
    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/issue49357a.dart:7:20: Error: The super constructor has no corresponding named parameter.
    required super.field,
                   ^"
    ;
}
class C extends core::Object {
  synthetic constructor •() → self::C
    : super core::Object::•()
    ;
  method method(dynamic list) → void {
    for (final dynamic element in list as{TypeError,ForDynamic} core::Iterable<dynamic>) {
    }
  }
}
