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

class A extends core::Object {
  constructor •() → void
    : super core::Object::•()
    ;
  operator ~() → core::int
    return 1;
  operator unary-() → core::double
    return 2.0;
}
static field self::A a = new self::A::•();
static field core::int v_complement = self::a.{self::A::~}();
static field core::double v_negate = self::a.{self::A::unary-}();
static method main() → dynamic {
  self::a;
  self::v_complement;
  self::v_negate;
}
