|  | library; | 
|  | import self as self; | 
|  | import "dart:core" as core; | 
|  | import "issue41180_lib.dart" as iss; | 
|  |  | 
|  | import "org-dartlang-testcase:///issue41180_lib.dart"; | 
|  |  | 
|  | class D<Y extends core::Object* = dynamic> extends core::Object { | 
|  | synthetic constructor •() → self::D<self::D::Y*>* | 
|  | : super core::Object::•() | 
|  | ; | 
|  | method method() → iss::C<self::D::Y*>* | 
|  | return new iss::C::•<self::D::Y*>(() → Null => null); | 
|  | abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode | 
|  | abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf | 
|  | abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf | 
|  | abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue | 
|  | abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse | 
|  | abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::== | 
|  | abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode | 
|  | abstract member-signature method toString() → core::String*; -> core::Object::toString | 
|  | abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod | 
|  | abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType | 
|  | } | 
|  | static method main() → void { | 
|  | iss::foo(() → Null => null); | 
|  | iss::bar = () → iss::Map<core::String*, core::String*>* => null; | 
|  | new self::D::•<core::int*>().{self::D::method}(); | 
|  | self::findKey(new iss::Map::•<core::String*, core::String*>("foo", "bar"), "bar"); | 
|  | } | 
|  | static method findKey(iss::Map<core::String*, dynamic>* m, dynamic search) → void { | 
|  | core::print(let final core::MapEntry<core::String*, dynamic>* #t1 = m.{iss::Map::entries}.{iss::Iterable::singleWhere}((core::MapEntry<core::String*, dynamic>* entry) → core::bool* => entry.{core::MapEntry::value}.{core::Object::==}(search), orElse: () → Null => null) in #t1.{core::Object::==}(null) ?{core::String*} null : #t1.{core::MapEntry::key}); | 
|  | } | 
|  |  | 
|  | library /*isNonNullableByDefault*/; | 
|  | import self as iss; | 
|  | import "dart:core" as core; | 
|  |  | 
|  | class C<X extends core::Object? = dynamic> extends core::Object { | 
|  | constructor •(() → iss::Map<core::String, core::String> f) → iss::C<iss::C::X%> | 
|  | : super core::Object::•() { | 
|  | core::print(f.{core::Object::runtimeType}); | 
|  | } | 
|  | } | 
|  | class Map<K extends core::Object? = dynamic, V extends core::Object? = dynamic> extends core::Object { | 
|  | final field iss::Map::K% key; | 
|  | final field iss::Map::V% value; | 
|  | constructor •(iss::Map::K% key, iss::Map::V% value) → iss::Map<iss::Map::K%, iss::Map::V%> | 
|  | : iss::Map::key = key, iss::Map::value = value, super core::Object::•() | 
|  | ; | 
|  | get entries() → iss::Iterable<core::MapEntry<iss::Map::K%, iss::Map::V%>> | 
|  | return new iss::Iterable::•<core::MapEntry<iss::Map::K%, iss::Map::V%>>(new core::MapEntry::_<iss::Map::K%, iss::Map::V%>(this.{iss::Map::key}, this.{iss::Map::value})); | 
|  | } | 
|  | class Iterable<E extends core::Object? = dynamic> extends core::Object { | 
|  | final field iss::Iterable::E% element; | 
|  | constructor •(iss::Iterable::E% element) → iss::Iterable<iss::Iterable::E%> | 
|  | : iss::Iterable::element = element, super core::Object::•() | 
|  | ; | 
|  | method singleWhere((iss::Iterable::E%) → core::bool test, {generic-covariant-impl () →? iss::Iterable::E% orElse = #C1}) → iss::Iterable::E% { | 
|  | if(test.call(this.{iss::Iterable::element})) { | 
|  | return this.{iss::Iterable::element}; | 
|  | } | 
|  | if(!orElse.{core::Object::==}(null)) | 
|  | return orElse{() → iss::Iterable::E%}.call(); | 
|  | throw "error"; | 
|  | } | 
|  | } | 
|  | static method foo(() → iss::Map<core::String, core::String> f) → void { | 
|  | core::print(f.{core::Object::runtimeType}); | 
|  | } | 
|  | static set bar(() → iss::Map<core::String, core::String> f) → void { | 
|  | core::print(f.{core::Object::runtimeType}); | 
|  | } | 
|  |  | 
|  | constants  { | 
|  | #C1 = null | 
|  | } |