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

static method getInt() → core::int
  return 0;
static method getNum() → core::num
  return 0;
static method getDouble() → core::double
  return 0.0;
static method test1(core::int t) → void {
  dynamic v1 = t = self::getInt();
  dynamic v2 = t = self::getNum();
  dynamic v4 = let final dynamic #t1 = t in #t1.==(null) ? t = self::getInt() : #t1;
  dynamic v5 = let final dynamic #t2 = t in #t2.==(null) ? t = self::getNum() : #t2;
  dynamic v7 = t = t.+(self::getInt());
  dynamic v8 = t = t.+(self::getNum());
  dynamic v10 = t = t.+(1);
  dynamic v11 = let final dynamic #t3 = t in let final dynamic #t4 = t = #t3.+(1) in #t3;
}
static method test2(core::num t) → void {
  dynamic v1 = t = self::getInt();
  dynamic v2 = t = self::getNum();
  dynamic v3 = t = self::getDouble();
  dynamic v4 = let final dynamic #t5 = t in #t5.==(null) ? t = self::getInt() : #t5;
  dynamic v5 = let final dynamic #t6 = t in #t6.==(null) ? t = self::getNum() : #t6;
  dynamic v6 = let final dynamic #t7 = t in #t7.==(null) ? t = self::getDouble() : #t7;
  dynamic v7 = t = t.+(self::getInt());
  dynamic v8 = t = t.+(self::getNum());
  dynamic v9 = t = t.+(self::getDouble());
  dynamic v10 = t = t.+(1);
  dynamic v11 = let final dynamic #t8 = t in let final dynamic #t9 = t = #t8.+(1) in #t8;
}
static method test3(core::double t) → void {
  dynamic v2 = t = self::getNum();
  dynamic v3 = t = self::getDouble();
  dynamic v5 = let final dynamic #t10 = t in #t10.==(null) ? t = self::getNum() : #t10;
  dynamic v6 = let final dynamic #t11 = t in #t11.==(null) ? t = self::getDouble() : #t11;
  dynamic v7 = t = t.+(self::getInt());
  dynamic v8 = t = t.+(self::getNum());
  dynamic v9 = t = t.+(self::getDouble());
  dynamic v10 = t = t.+(1);
  dynamic v11 = let final dynamic #t12 = t in let final dynamic #t13 = t = #t12.+(1) in #t12;
}
static method main() → dynamic {}
