library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/later.dart:12:7: Error: Can't have modifier 'late' here.
// Try removing 'late'.
//   foo(late int x) {}
//       ^^^^
//
// pkg/front_end/testcases/nnbd/later.dart:15:5: Error: Can't have modifier 'late' here.
// Try removing 'late'.
// bar(late int x) {}
//     ^^^^
//
import self as self;
import "dart:core" as core;

class A extends core::Object {
  field core::int a;
  late field core::int b;
  synthetic constructor •() → self::A
    ;
  method foo(core::int x) → dynamic
    ;
}
class B extends core::Object /*hasConstConstructor*/  {
  late final field core::int x = 42;
  const constructor •() → self::B
    : super core::Object::•()
    ;
}
class C extends core::Object {
  late final [setter] field core::int x;
  synthetic constructor •() → self::C
    ;
  method initVars() → dynamic
    ;
}
static method bar(core::int x) → dynamic
  ;
static method baz() → dynamic
  ;
static method hest() → dynamic async 
  ;
static method fisk() → dynamic async 
  ;
static method main() → dynamic
  ;
