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

class A extends core::Object {
  constructor •() → void
    : super core::Object::•()
    ;
}
class B extends self::A {
  constructor •() → void
    : super self::A::•()
    ;
  operator +(self::C v) → self::A
    return null;
  operator -(core::int i) → self::B
    return null;
  operator *(self::B v) → self::B
    return null;
  operator &(self::A v) → self::C
    return null;
}
class C extends self::B {
  constructor •() → void
    : super self::B::•()
    ;
}
static method f() → dynamic
  return null;
static method test() → void {
  self::B local;
  local = self::f();
  local.==(null) ? local = self::f() : null;
  local = local.+(self::f());
  local = local.*(self::f());
  local = local.&(self::f());
  local = local.-(1);
  local = local.-(1);
  dynamic v1 = local = self::f();
  dynamic v2 = let final dynamic #t1 = local in #t1.==(null) ? local = self::f() : #t1;
  dynamic v3 = local = local.+(self::f());
  dynamic v4 = local = local.*(self::f());
  dynamic v5 = local = local.&(self::f());
  dynamic v6 = local = local.-(1);
  dynamic v7 = let final dynamic #t2 = local in let final dynamic #t3 = local = #t2.-(1) in #t2;
}
static method main() → dynamic {}
