library;
//
// Problems in library:
//
// pkg/front_end/testcases/general/issue52726.dart:10:22: Error: A value of type 'Object?' can't be assigned to a variable of type 'Object' because 'Object?' is nullable and 'Object' isn't.
//  - 'Object' is from 'dart:core'.
//     Object o = first.first; // Error.
//                      ^
//
import self as self;
import "dart:core" as core;

class WeakMap<K extends core::Object, V extends core::Object? = dynamic> extends core::Object {
  constructor •(core::List<(self::WeakMap::K, self::WeakMap::V%)> entries) → self::WeakMap<self::WeakMap::K, self::WeakMap::V%>
    : super core::Object::•() {
    core::Iterable<core::List<core::Object?>> mapped = entries.{core::Iterable::map}<core::List<core::Object?>>(((self::WeakMap::K, self::WeakMap::V%) i) → core::List<core::Object?> => <core::Object?>[i.$1{self::WeakMap::K}, i.$2{self::WeakMap::V%}]){(((self::WeakMap::K, self::WeakMap::V%)) → core::List<core::Object?>) → core::Iterable<core::List<core::Object?>>};
    core::List<core::Object?> first = mapped.{core::Iterable::first}{core::List<core::Object?>};
    first.{core::List::add}(null){(core::Object?) → void};
    core::Object o = invalid-expression "pkg/front_end/testcases/general/issue52726.dart:10:22: Error: A value of type 'Object?' can't be assigned to a variable of type 'Object' because 'Object?' is nullable and 'Object' isn't.
 - 'Object' is from 'dart:core'.
    Object o = first.first; // Error.
                     ^" in first.{core::Iterable::first}{core::Object?} as{TypeError} core::Object;
  }
}
