| library /*isNonNullableByDefault*/; |
| import self as self; |
| import "dart:core" as core; |
| |
| abstract class B extends core::Object { |
| synthetic constructor •() → self::B |
| : super core::Object::•() |
| ; |
| abstract method call<T extends core::Object? = dynamic>() → dynamic; |
| } |
| class C extends core::Object implements self::B { |
| synthetic constructor •() → self::C |
| : super core::Object::•() |
| ; |
| method call<T extends core::Object? = dynamic>() → dynamic |
| return core::print(self::C::call::T%); |
| static method _#new#tearOff() → self::C |
| return new self::C::•(); |
| } |
| abstract class A extends core::Object { |
| synthetic constructor •() → self::A |
| : super core::Object::•() |
| ; |
| } |
| class Wrapper extends core::Object { |
| final field self::B b; |
| final field self::B call; |
| constructor •(self::B b, self::B call) → self::Wrapper |
| : self::Wrapper::b = b, self::Wrapper::call = call, super core::Object::•() |
| ; |
| static method _#new#tearOff(self::B b, self::B call) → self::Wrapper |
| return new self::Wrapper::•(b, call); |
| } |
| static method main() → void { |
| self::B b = new self::C::•(); |
| b.{self::B::call}<self::A>(){() → dynamic}; |
| new self::Wrapper::•(b, b).{self::Wrapper::b}<self::A>(){() → dynamic}; |
| new self::Wrapper::•(b, b).{self::Wrapper::b}{self::B}.{self::B::call}<self::A>(){() → dynamic}; |
| new self::Wrapper::•(b, b).{self::Wrapper::call}<self::A>(){() → dynamic}; |
| new self::Wrapper::•(b, b).{self::Wrapper::call}{self::B}.{self::B::call}<self::A>(){() → dynamic}; |
| } |