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

typedef F<T extends core::Object> = (T) → void;
class C<T extends core::Object> extends core::Object {
  field self::C::T x = null;
  synthetic constructor •() → void
    : super core::Object::•()
    ;
  set y(self::C::T value) → void {}
  method f(self::C::T value) → void {
    this.{self::C::x} = value;
    this.{self::C::y} = value;
  }
}
static method g(self::C<core::num> c) → void {
  c.x = 1.5;
  c.y = 1.5;
}
static method main() → void {}
