library test;
import self as self;
import "dart:core" as core;

class A extends core::Object {
  field core::int x = null;
  default constructor •() → void
    : super core::Object::•()
    ;
  operator +(dynamic other) → self::B
    return null;
}
class B extends self::A {
  constructor •(dynamic ignore) → void
    : super self::A::•()
    ;
}
static field self::A a = new self::A::•();
static field self::B b = new self::B::•(throw new core::NoSuchMethodError::_withType(null, #x, 33, <dynamic>[].toList(growable: false), <dynamic, dynamic>{}, null));
static field core::List<dynamic> c1 = <dynamic>[throw new core::NoSuchMethodError::_withType(null, #x, 33, <dynamic>[].toList(growable: false), <dynamic, dynamic>{}, null)];
static field core::List<dynamic> c2 = const <dynamic>[];
static field core::Map<dynamic, dynamic> d = <dynamic, dynamic>{"a": "b"};
static field self::A e = let final self::A #t1 = new self::A::•() in let final dynamic #t2 = #t1.{self::A::x} = 3 in #t1;
static field core::int f = 2.{core::num::+}(3);
static field core::int g = 3.{core::int::unary-}();
static field self::B h = new self::A::•().{self::A::+}(3);
static field dynamic i = new self::A::•().unary-();
static field self::B j = null as self::B;
static method test1() → dynamic {
  self::a = "hi";
  self::a = new self::B::•(3);
  self::b = "hi";
  self::b = new self::B::•(3);
  self::c1 = <dynamic>[];
  self::c1 = <dynamic, dynamic>{};
  self::c2 = <dynamic>[];
  self::c2 = <dynamic, dynamic>{};
  self::d = <dynamic, dynamic>{};
  self::d = 3;
  self::e = new self::A::•();
  self::e = <dynamic, dynamic>{};
  self::f = 3;
  self::f = false;
  self::g = 1;
  self::g = false;
  self::h = false;
  self::h = new self::B::•("b");
  self::i = false;
  self::j = new self::B::•("b");
  self::j = false;
  self::j = <dynamic>[];
}
static method main() → dynamic {}
