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

class A extends core::Object {
  field core::int x = null;
  synthetic 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 dynamic a = new self::A::•();
static field dynamic b = new self::B::•(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#x, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
static field dynamic c1 = <dynamic>[throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#x, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))];
static field dynamic c2 = const <dynamic>[];
static field dynamic d = <dynamic, dynamic>{"a": "b"};
static field dynamic e = let final dynamic #t1 = new self::A::•() in let final dynamic #t2 = #t1.x = 3 in #t1;
static field dynamic f = 2.+(3);
static field dynamic g = 3.unary-();
static field dynamic h = new self::A::•().+(3);
static field dynamic i = new self::A::•().unary-();
static field dynamic 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 {}
