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

class A extends core::Object {
  field core::int* f = null;
  synthetic constructor •() → self::A*
    : super core::Object::•()
    ;
}
static field core::int* v_assign = new self::A::•().{self::A::f} = 1;
static field core::int* v_plus = let final self::A* #t1 = new self::A::•() in #t1.{self::A::f} = #t1.{self::A::f}.{core::num::+}(1);
static field core::int* v_minus = let final self::A* #t2 = new self::A::•() in #t2.{self::A::f} = #t2.{self::A::f}.{core::num::-}(1);
static field core::int* v_multiply = let final self::A* #t3 = new self::A::•() in #t3.{self::A::f} = #t3.{self::A::f}.{core::num::*}(1);
static field core::int* v_prefix_pp = let final self::A* #t4 = new self::A::•() in #t4.{self::A::f} = #t4.{self::A::f}.{core::num::+}(1);
static field core::int* v_prefix_mm = let final self::A* #t5 = new self::A::•() in #t5.{self::A::f} = #t5.{self::A::f}.{core::num::-}(1);
static field core::int* v_postfix_pp = let final self::A* #t6 = new self::A::•() in let final core::int* #t7 = #t6.{self::A::f} in let final core::int* #t8 = #t6.{self::A::f} = #t7.{core::num::+}(1) in #t7;
static field core::int* v_postfix_mm = let final self::A* #t9 = new self::A::•() in let final core::int* #t10 = #t9.{self::A::f} in let final core::int* #t11 = #t9.{self::A::f} = #t10.{core::num::-}(1) in #t10;
static method main() → dynamic {}
