// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.


class A {
  static late final x2;
  static late int x3;
  static late final A x4;
  static late final x6 = 0;
  static late int x7 = 0;
  static late final A? x8 = null;

  covariant late var x13;
  covariant late var x14 = '';

  covariant late double x23;
  covariant late String x24 = '';

  late final x26;
  late int x27;
  late final A x28;
  late final x30 = 0;
  late int x31 = 0;
  late final A? x32 = null;

  List foo() {
    final x41 = true;
    late final x42;
    late final x43 = [], x44 = {};
    return x43;
  }
}

abstract class B {
  m1(
    int some,
    regular,
    covariant parameters, {
    required p1,
    required covariant p3,
    required covariant int p4,
  });
}

main() {
  A? a;
  var s = '' as String?;
  a
    ?..foo().length
    ..x27 = s!.toString().length;
}
