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

static field core::bool* a_equal = 1 =={core::num::==}{(core::Object*) →* core::bool*} 2;
static field core::bool* a_notEqual = !(1 =={core::num::==}{(core::Object*) →* core::bool*} 2);
static field core::int* a_bitXor = 1.{core::int::^}(2){(core::int*) →* core::int*};
static field core::int* a_bitAnd = 1.{core::int::&}(2){(core::int*) →* core::int*};
static field core::int* a_bitOr = 1.{core::int::|}(2){(core::int*) →* core::int*};
static field core::int* a_bitShiftRight = 1.{core::int::>>}(2){(core::int*) →* core::int*};
static field core::int* a_bitShiftLeft = 1.{core::int::<<}(2){(core::int*) →* core::int*};
static field core::int* a_add = 1.{core::num::+}(2){(core::num*) →* core::int*};
static field core::int* a_subtract = 1.{core::num::-}(2){(core::num*) →* core::int*};
static field core::int* a_multiply = 1.{core::num::*}(2){(core::num*) →* core::int*};
static field core::double* a_divide = 1.{core::num::/}(2){(core::num*) →* core::double*};
static field core::int* a_floorDivide = 1.{core::num::~/}(2){(core::num*) →* core::int*};
static field core::bool* a_greater = 1.{core::num::>}(2){(core::num*) →* core::bool*};
static field core::bool* a_less = 1.{core::num::<}(2){(core::num*) →* core::bool*};
static field core::bool* a_greaterEqual = 1.{core::num::>=}(2){(core::num*) →* core::bool*};
static field core::bool* a_lessEqual = 1.{core::num::<=}(2){(core::num*) →* core::bool*};
static field core::int* a_modulo = 1.{core::num::%}(2){(core::num*) →* core::int*};
static method main() → dynamic {
  self::a_equal;
  self::a_notEqual;
  self::a_bitXor;
  self::a_bitAnd;
  self::a_bitOr;
  self::a_bitShiftRight;
  self::a_bitShiftLeft;
  self::a_add;
  self::a_subtract;
  self::a_multiply;
  self::a_divide;
  self::a_floorDivide;
  self::a_greater;
  self::a_less;
  self::a_greaterEqual;
  self::a_lessEqual;
  self::a_modulo;
}
