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

class C<T extends core::num = dynamic> extends core::Object {
  field self::C::T a = null;
  synthetic constructor •() → void
    : super core::Object::•()
    ;
  method op(self::C::T b) → void {
    self::C::T r1 = this.{self::C::a}.+(b);
    self::C::T r2 = this.{self::C::a}.-(b);
    self::C::T r3 = this.{self::C::a}.*(b);
  }
  method opEq(self::C::T b) → void {
    this.{self::C::a} = this.{self::C::a}.+(b);
    this.{self::C::a} = this.{self::C::a}.-(b);
    this.{self::C::a} = this.{self::C::a}.*(b);
  }
}
static method main() → dynamic {}
