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

class A extends core::Object {
  synthetic constructor •() → self::A*
    ;
  operator +(dynamic other) → core::int*
    ;
  operator -(dynamic other) → core::double*
    ;
}
static field core::int* v_add;
static field core::double* v_minus;
static method main() → dynamic
  ;
