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

class A extends core::Object {
  constructor •() → self::A*
    : 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;
}
