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

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