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

typedef F<T extends core::Object = dynamic> = (T) → void;
class C<T extends core::Object = dynamic> 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 {}
