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

static method main() → dynamic {
  core::num n = 1;
  core::int i = 1;
  core::double d = 1.0;
  core::double ddPlus = d.{core::double::+}(d);
  core::double ddMinus = d.{core::double::-}(d);
  core::double ddTimes = d.{core::double::*}(d);
  core::double ddMod = d.{core::double::%}(d);
  core::double diPlus = d.{core::double::+}(i);
  core::double diMinus = d.{core::double::-}(i);
  core::double diTimes = d.{core::double::*}(i);
  core::double diMod = d.{core::double::%}(i);
  core::double dnPlus = d.{core::double::+}(n);
  core::double dnMinus = d.{core::double::-}(n);
  core::double dnTimes = d.{core::double::*}(n);
  core::double dnMod = d.{core::double::%}(n);
  core::double idPlus = i.{core::num::+}(d);
  core::double idMinus = i.{core::num::-}(d);
  core::double idTimes = i.{core::num::*}(d);
  core::double idMod = i.{core::num::%}(d);
  core::int iiPlus = i.{core::num::+}(i);
  core::int iiMinus = i.{core::num::-}(i);
  core::int iiTimes = i.{core::num::*}(i);
  core::int iiMod = i.{core::num::%}(i);
  core::num inPlus = i.{core::num::+}(n);
  core::num inMinus = i.{core::num::-}(n);
  core::num inTimes = i.{core::num::*}(n);
  core::num inMod = i.{core::num::%}(n);
  core::num ndPlus = n.{core::num::+}(d);
  core::num ndMinus = n.{core::num::-}(d);
  core::num ndTimes = n.{core::num::*}(d);
  core::num ndMod = n.{core::num::%}(d);
  core::num niPlus = n.{core::num::+}(i);
  core::num niMinus = n.{core::num::-}(i);
  core::num niTimes = n.{core::num::*}(i);
  core::num niMod = n.{core::num::%}(i);
  core::num nnPlus = n.{core::num::+}(n);
  core::num nnMinus = n.{core::num::-}(n);
  core::num nnTimes = n.{core::num::*}(n);
  core::num nnMod = n.{core::num::%}(n);
}
