library /*isNonNullableByDefault*/; import self as self; import "dart:core" as core; import "dart:async" as asy; abstract class TestMixin extends core::Object /*isMixinDeclaration*/ { method test(generic-covariant-impl asy::Future fetch) → asy::Future async { final self::TestMixin::R% response = await fetch; self::TestMixin::T% result; if(response is{ForNonNullableByDefault} self::Response) { result = response{self::TestMixin::R% & self::Response /* '%' & '!' = '!' */}.{self::Response::data} as{TypeError,ForDynamic,ForNonNullableByDefault} self::TestMixin::T%; } else if(response is{ForNonNullableByDefault} self::PagingResponse) { result = response{self::TestMixin::R% & self::PagingResponse /* '%' & '!' = '!' */}.{self::PagingResponse::data}.{self::PagingResponseData::data} as{ForNonNullableByDefault} self::TestMixin::T%; } else if(response is{ForNonNullableByDefault} self::TestMixin::T%) { result = response{self::TestMixin::R% & self::TestMixin::T% /* '%' & '%' = '%' */}; } else { throw core::Exception::•("Invalid response type"); } return result; } } class PagingResponse extends core::Object { final field self::PagingResponseData data; constructor •(self::PagingResponseData data) → self::PagingResponse : self::PagingResponse::data = data, super core::Object::•() ; } class PagingResponseData extends core::Object { final field core::List data; constructor •(core::List data) → self::PagingResponseData : self::PagingResponseData::data = data, super core::Object::•() ; } class Response extends core::Object { final field self::Response::T% data; constructor •(self::Response::T% data) → self::Response : self::Response::data = data, super core::Object::•() ; } abstract class _Class1&Object&TestMixin = core::Object with self::TestMixin, core::String> /*isAnonymousMixin,hasConstConstructor*/ { const synthetic constructor •() → self::_Class1&Object&TestMixin : super core::Object::•() ; mixin-super-stub method test(generic-covariant-impl asy::Future> fetch) → asy::Future return super.{self::TestMixin::test}(fetch); } class Class1 extends self::_Class1&Object&TestMixin { synthetic constructor •() → self::Class1 : super self::_Class1&Object&TestMixin::•() ; method _test() → dynamic { final self::Response response = new self::Response::•("test"); this.{self::_Class1&Object&TestMixin::test}(asy::Future::value>(response)); } } abstract class _Class2&Object&TestMixin = core::Object with self::TestMixin, core::String> /*isAnonymousMixin,hasConstConstructor*/ { const synthetic constructor •() → self::_Class2&Object&TestMixin : super core::Object::•() ; mixin-super-stub method test(generic-covariant-impl asy::Future> fetch) → asy::Future return super.{self::TestMixin::test}(fetch); } class Class2 extends self::_Class2&Object&TestMixin { synthetic constructor •() → self::Class2 : super self::_Class2&Object&TestMixin::•() ; method _test() → dynamic { final self::PagingResponse response = new self::PagingResponse::•(new self::PagingResponseData::•(["test"])); this.{self::_Class2&Object&TestMixin::test}(asy::Future::value>(response)); } } static method main() → dynamic {}