library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/issue43256.dart:16:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
//   if (i > 0) ...nullableMap, // error
//                 ^
//
// pkg/front_end/testcases/nnbd/issue43256.dart:23:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
//   if (i > 0) ...nullableList, // error
//                 ^
//
// pkg/front_end/testcases/nnbd/issue43256.dart:29:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
//   if (i > 0) ...nullableList, // error
//                 ^
//
// pkg/front_end/testcases/nnbd/issue43256.dart:37:19: Error: Unexpected type 'X' of a map spread entry.  Expected 'dynamic' or a Map.
//     if (i > 0) ...x, // error
//                   ^
//
// pkg/front_end/testcases/nnbd/issue43256.dart:38:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
//     if (i > 0) ...y, // error
//                   ^
//
// pkg/front_end/testcases/nnbd/issue43256.dart:48:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
//     if (i > 0) ...x, // error
//                   ^
//
// pkg/front_end/testcases/nnbd/issue43256.dart:48:19: Error: Unexpected type 'X' of a spread.  Expected 'dynamic' or an Iterable.
//     if (i > 0) ...x, // error
//                   ^
//
// pkg/front_end/testcases/nnbd/issue43256.dart:49:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
//     if (i > 0) ...y, // error
//                   ^
//
// pkg/front_end/testcases/nnbd/issue43256.dart:53:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
//     if (i > 0) ...x, // error
//                   ^
//
// pkg/front_end/testcases/nnbd/issue43256.dart:53:19: Error: Unexpected type 'X' of a spread.  Expected 'dynamic' or an Iterable.
//     if (i > 0) ...x, // error
//                   ^
//
// pkg/front_end/testcases/nnbd/issue43256.dart:54:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
//     if (i > 0) ...y, // error
//                   ^
//
import self as self;
import "dart:core" as core;
import "dart:collection" as col;

static field core::int i = 1;
static field core::Map<core::int, core::String>? nullableMap = <core::int, core::String>{1: "Let", 2: "it", 3: "be"};
static field core::List<core::int>? nullableList = <core::int>[1, 2, 3];
static field dynamic dynamicMap = <core::int, core::String>{1: "Let", 2: "it", 3: "be"};
static field dynamic dynamicList = <core::int>[1, 2, 3];
static field core::Map<dynamic, dynamic> map1 = block {
  final core::Map<dynamic, dynamic> #t1 = <dynamic, dynamic>{};
  if(self::i.{core::num::>}(0){(core::num) → core::bool})
    #t1.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:16:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
  if (i > 0) ...nullableMap, // error
                ^", null){(dynamic, dynamic) → void};
  if(self::i.{core::num::>}(0){(core::num) → core::bool})
    #t1.{core::Map::addAll}{Invariant}(self::dynamicMap as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<dynamic, dynamic>){(core::Map<dynamic, dynamic>) → void};
  if(self::i.{core::num::>}(0){(core::num) → core::bool})
    #t1.{core::Map::addAll}{Invariant}(self::nullableMap!){(core::Map<dynamic, dynamic>) → void};
} =>#t1;
static field core::Set<dynamic> set1 = block {
  final core::Set<dynamic> #t2 = col::LinkedHashSet::•<dynamic>();
  #t2.{core::Set::add}{Invariant}(0){(dynamic) → core::bool};
  if(self::i.{core::num::>}(0){(core::num) → core::bool})
    #t2.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:23:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
  if (i > 0) ...nullableList, // error
                ^"){(dynamic) → core::bool};
  if(self::i.{core::num::>}(0){(core::num) → core::bool})
    #t2.{core::Set::addAll}{Invariant}(self::dynamicList as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>){(core::Iterable<dynamic>) → void};
  if(self::i.{core::num::>}(0){(core::num) → core::bool})
    #t2.{core::Set::addAll}{Invariant}(self::nullableList!){(core::Iterable<dynamic>) → void};
} =>#t2;
static field core::List<dynamic> list1 = block {
  final core::List<dynamic> #t3 = <dynamic>[];
  if(self::i.{core::num::>}(0){(core::num) → core::bool})
    #t3.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:29:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
  if (i > 0) ...nullableList, // error
                ^"){(dynamic) → void};
  if(self::i.{core::num::>}(0){(core::num) → core::bool})
    #t3.{core::List::addAll}{Invariant}(self::dynamicList as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>){(core::Iterable<dynamic>) → void};
  if(self::i.{core::num::>}(0){(core::num) → core::bool})
    #t3.{core::List::addAll}{Invariant}(self::nullableList!){(core::Iterable<dynamic>) → void};
} =>#t3;
static method testMap<X extends dynamic, Y extends core::Map<core::int, core::String>?, Z extends core::Map<core::int, core::String>>(self::testMap::X% x, self::testMap::Y% y, self::testMap::Z z) → dynamic {
  core::Map<dynamic, dynamic> map2 = block {
    final core::Map<dynamic, dynamic> #t4 = <dynamic, dynamic>{};
    if(self::i.{core::num::>}(0){(core::num) → core::bool})
      #t4.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:37:19: Error: Unexpected type 'X' of a map spread entry.  Expected 'dynamic' or a Map.
    if (i > 0) ...x, // error
                  ^", null){(dynamic, dynamic) → void};
    if(self::i.{core::num::>}(0){(core::num) → core::bool})
      #t4.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:38:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
    if (i > 0) ...y, // error
                  ^", null){(dynamic, dynamic) → void};
    if(self::i.{core::num::>}(0){(core::num) → core::bool})
      #t4.{core::Map::addAll}{Invariant}(z){(core::Map<dynamic, dynamic>) → void};
    if(self::i.{core::num::>}(0){(core::num) → core::bool})
      #t4.{core::Map::addAll}{Invariant}(y!){(core::Map<dynamic, dynamic>) → void};
  } =>#t4;
}
static method testIterables<X extends dynamic, Y extends core::List<core::int>?, Z extends core::List<core::int>>(self::testIterables::X% x, self::testIterables::Y% y, self::testIterables::Z z) → dynamic {
  core::Set<dynamic> set2 = block {
    final core::Set<dynamic> #t5 = col::LinkedHashSet::•<dynamic>();
    #t5.{core::Set::add}{Invariant}(0){(dynamic) → core::bool};
    if(self::i.{core::num::>}(0){(core::num) → core::bool})
      #t5.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:48:19: Error: Unexpected type 'X' of a spread.  Expected 'dynamic' or an Iterable.
    if (i > 0) ...x, // error
                  ^"){(dynamic) → core::bool};
    if(self::i.{core::num::>}(0){(core::num) → core::bool})
      #t5.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:49:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
    if (i > 0) ...y, // error
                  ^"){(dynamic) → core::bool};
    if(self::i.{core::num::>}(0){(core::num) → core::bool})
      #t5.{core::Set::addAll}{Invariant}(z){(core::Iterable<dynamic>) → void};
  } =>#t5;
  core::List<dynamic> list2 = block {
    final core::List<dynamic> #t6 = <dynamic>[];
    if(self::i.{core::num::>}(0){(core::num) → core::bool})
      #t6.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:53:19: Error: Unexpected type 'X' of a spread.  Expected 'dynamic' or an Iterable.
    if (i > 0) ...x, // error
                  ^"){(dynamic) → void};
    if(self::i.{core::num::>}(0){(core::num) → core::bool})
      #t6.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:54:19: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
    if (i > 0) ...y, // error
                  ^"){(dynamic) → void};
    if(self::i.{core::num::>}(0){(core::num) → core::bool})
      #t6.{core::List::addAll}{Invariant}(z){(core::Iterable<dynamic>) → void};
  } =>#t6;
}
static method main() → dynamic {}
