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

class A extends core::Object {
  synthetic constructor •() → void
    ;
  operator +(core::int value) → self::C
    ;
  operator *(self::D value) → self::C
    ;
}
class B extends core::Object {
  synthetic constructor •() → void
    ;
  operator +(core::int value) → self::E
    ;
  operator *(self::F value) → self::E
    ;
}
class C extends self::B {
  synthetic constructor •() → void
    ;
}
class D extends core::Object {
  synthetic constructor •() → void
    ;
}
class E extends core::Object {
  synthetic constructor •() → void
    ;
}
class F extends core::Object {
  synthetic constructor •() → void
    ;
}
static method f<T extends core::Object>() → self::f::T
  ;
static get target() → self::A
  ;
static set target(self::B value) → void
  ;
static method test1() → void
  ;
static method test2() → void
  ;
static method test3() → void
  ;
static method main() → dynamic
  ;
