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

class C<T extends core::num = dynamic> extends core::Object {
  generic-covariant-impl field self::C::T a = null;
  synthetic constructor •() → self::C<self::C::T>
    : super core::Object::•()
    ;
  method op(generic-covariant-impl 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(generic-covariant-impl 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 {}
