library;
import self as self;
import "dart:core" as core;
import "infer_constraints_from_opt_in_lib.dart" as inf;
import "dart:collection" as col;

import "org-dartlang-testcase:///infer_constraints_from_opt_in_lib.dart";

abstract class A extends core::Object {
  synthetic constructor •() → self::A*
    : super core::Object::•()
    ;
  method baz(inf::B* b) → dynamic {
    b.{inf::B::foo}(b.{inf::B::bar}<core::List<core::int*>*>());
  }
}
static method main() → dynamic {
  core::List<dynamic>* local0 = <dynamic>[];
  core::List<inf::C<dynamic>*>* local1a = <inf::C<dynamic>*>[inf::field1];
  core::List<inf::C<dynamic>*>* local1b = <inf::C<dynamic>*>[inf::field2];
  core::List<inf::C<core::int*>*>* local1c = <inf::C<core::int*>*>[inf::field3];
  core::List<inf::C<core::int*>*>* local1d = <inf::C<core::int*>*>[inf::field4];
  core::List<inf::C<core::int*>*>* local1e = <inf::C<core::int*>*>[inf::field5];
  core::List<inf::C<core::int*>*>* local1f = <inf::C<core::int*>*>[inf::field6];
  core::List<core::int*>* local1g = <core::int*>[inf::field7];
  core::List<core::int*>* local1h = <core::int*>[inf::field8];
  core::List<core::Null?>* local1i = <core::Null?>[null];
  core::Set<inf::C<dynamic>*>* local2a = let final core::Set<inf::C<dynamic>*>* #t1 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final core::bool* #t2 = #t1.{core::Set::add}(inf::field1) in let final core::bool* #t3 = #t1.{core::Set::add}(null) in #t1;
  core::Set<inf::C<dynamic>*>* local2b = let final core::Set<inf::C<dynamic>*>* #t4 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final core::bool* #t5 = #t4.{core::Set::add}(inf::field2) in let final core::bool* #t6 = #t4.{core::Set::add}(null) in #t4;
  core::Set<inf::C<core::int*>*>* local2c = let final core::Set<inf::C<core::int*>*>* #t7 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool* #t8 = #t7.{core::Set::add}(inf::field3) in let final core::bool* #t9 = #t7.{core::Set::add}(null) in #t7;
  core::Set<inf::C<core::int*>*>* local2d = let final core::Set<inf::C<core::int*>*>* #t10 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool* #t11 = #t10.{core::Set::add}(inf::field4) in let final core::bool* #t12 = #t10.{core::Set::add}(null) in #t10;
  core::Set<inf::C<core::int*>*>* local2e = let final core::Set<inf::C<core::int*>*>* #t13 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool* #t14 = #t13.{core::Set::add}(inf::field5) in let final core::bool* #t15 = #t13.{core::Set::add}(null) in #t13;
  core::Set<inf::C<core::int*>*>* local2f = let final core::Set<inf::C<core::int*>*>* #t16 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool* #t17 = #t16.{core::Set::add}(inf::field6) in let final core::bool* #t18 = #t16.{core::Set::add}(null) in #t16;
  core::Set<core::int*>* local2g = let final core::Set<core::int*>* #t19 = col::LinkedHashSet::•<core::int*>() in let final core::bool* #t20 = #t19.{core::Set::add}(inf::field7) in let final core::bool* #t21 = #t19.{core::Set::add}(null) in #t19;
  core::Set<core::int*>* local2h = let final core::Set<core::int*>* #t22 = col::LinkedHashSet::•<core::int*>() in let final core::bool* #t23 = #t22.{core::Set::add}(inf::field8) in let final core::bool* #t24 = #t22.{core::Set::add}(null) in #t22;
  core::Set<inf::C<dynamic>*>* local3a = let final core::Set<inf::C<dynamic>*>* #t25 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final core::bool* #t26 = #t25.{core::Set::add}(null) in let final core::bool* #t27 = #t25.{core::Set::add}(inf::field1) in #t25;
  core::Set<inf::C<dynamic>*>* local3b = let final core::Set<inf::C<dynamic>*>* #t28 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final core::bool* #t29 = #t28.{core::Set::add}(null) in let final core::bool* #t30 = #t28.{core::Set::add}(inf::field2) in #t28;
  core::Set<inf::C<core::int*>*>* local3c = let final core::Set<inf::C<core::int*>*>* #t31 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool* #t32 = #t31.{core::Set::add}(null) in let final core::bool* #t33 = #t31.{core::Set::add}(inf::field3) in #t31;
  core::Set<inf::C<core::int*>*>* local3d = let final core::Set<inf::C<core::int*>*>* #t34 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool* #t35 = #t34.{core::Set::add}(null) in let final core::bool* #t36 = #t34.{core::Set::add}(inf::field4) in #t34;
  core::Set<inf::C<core::int*>*>* local3e = let final core::Set<inf::C<core::int*>*>* #t37 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool* #t38 = #t37.{core::Set::add}(null) in let final core::bool* #t39 = #t37.{core::Set::add}(inf::field5) in #t37;
  core::Set<inf::C<core::int*>*>* local3f = let final core::Set<inf::C<core::int*>*>* #t40 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool* #t41 = #t40.{core::Set::add}(null) in let final core::bool* #t42 = #t40.{core::Set::add}(inf::field6) in #t40;
  core::Set<core::int*>* local3g = let final core::Set<core::int*>* #t43 = col::LinkedHashSet::•<core::int*>() in let final core::bool* #t44 = #t43.{core::Set::add}(null) in let final core::bool* #t45 = #t43.{core::Set::add}(inf::field7) in #t43;
  core::Set<core::int*>* local3h = let final core::Set<core::int*>* #t46 = col::LinkedHashSet::•<core::int*>() in let final core::bool* #t47 = #t46.{core::Set::add}(null) in let final core::bool* #t48 = #t46.{core::Set::add}(inf::field8) in #t46;
}

library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in_lib.dart:11:9: Error: Field 'field5' should be initialized because its type 'C<int?>' doesn't allow null.
//  - 'C' is from 'pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in_lib.dart'.
// C<int?> field5;
//         ^^^^^^
//
// pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in_lib.dart:13:5: Error: Field 'field7' should be initialized because its type 'int' doesn't allow null.
// int field7;
//     ^^^^^^
//
import self as inf;
import "dart:core" as core;
import "dart:collection" as col;

class C<T extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → inf::C<inf::C::T%>
    : super core::Object::•()
    ;
}
abstract class B extends core::Object {
  synthetic constructor •() → inf::B
    : super core::Object::•()
    ;
  abstract method bar<X extends core::List<core::int?>? = core::List<core::int?>?>() → inf::B::bar::X%;
  abstract method foo(core::List<core::int> list) → dynamic;
}
static field inf::C<dynamic> field1 = new inf::C::•<dynamic>();
static field inf::C<dynamic>? field2;
static field inf::C<core::int> field3 = new inf::C::•<core::int>();
static field inf::C<core::int>? field4;
static field inf::C<core::int?> field5;
static field inf::C<core::int?>? field6;
static field core::int field7;
static field core::int? field8;
static method method() → dynamic {
  core::List<dynamic> local0 = <dynamic>[];
  core::List<inf::C<dynamic>> local1a = <inf::C<dynamic>>[inf::field1];
  core::List<inf::C<dynamic>?> local1b = <inf::C<dynamic>?>[inf::field2];
  core::List<inf::C<core::int>> local1c = <inf::C<core::int>>[inf::field3];
  core::List<inf::C<core::int>?> local1d = <inf::C<core::int>?>[inf::field4];
  core::List<inf::C<core::int?>> local1e = <inf::C<core::int?>>[inf::field5];
  core::List<inf::C<core::int?>?> local1f = <inf::C<core::int?>?>[inf::field6];
  core::List<core::int> local1g = <core::int>[inf::field7];
  core::List<core::int?> local1h = <core::int?>[inf::field8];
  core::List<core::Null?> local1i = <core::Null?>[null];
  core::Set<inf::C<dynamic>?> local2a = let final core::Set<inf::C<dynamic>?> #t49 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final core::bool* #t50 = #t49.{core::Set::add}(inf::field1) in let final core::bool* #t51 = #t49.{core::Set::add}(null) in #t49;
  core::Set<inf::C<dynamic>?> local2b = let final core::Set<inf::C<dynamic>?> #t52 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final core::bool* #t53 = #t52.{core::Set::add}(inf::field2) in let final core::bool* #t54 = #t52.{core::Set::add}(null) in #t52;
  core::Set<inf::C<core::int>?> local2c = let final core::Set<inf::C<core::int>?> #t55 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final core::bool* #t56 = #t55.{core::Set::add}(inf::field3) in let final core::bool* #t57 = #t55.{core::Set::add}(null) in #t55;
  core::Set<inf::C<core::int>?> local2d = let final core::Set<inf::C<core::int>?> #t58 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final core::bool* #t59 = #t58.{core::Set::add}(inf::field4) in let final core::bool* #t60 = #t58.{core::Set::add}(null) in #t58;
  core::Set<inf::C<core::int?>?> local2e = let final core::Set<inf::C<core::int?>?> #t61 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final core::bool* #t62 = #t61.{core::Set::add}(inf::field5) in let final core::bool* #t63 = #t61.{core::Set::add}(null) in #t61;
  core::Set<inf::C<core::int?>?> local2f = let final core::Set<inf::C<core::int?>?> #t64 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final core::bool* #t65 = #t64.{core::Set::add}(inf::field6) in let final core::bool* #t66 = #t64.{core::Set::add}(null) in #t64;
  core::Set<core::int?> local2g = let final core::Set<core::int?> #t67 = col::LinkedHashSet::•<core::int?>() in let final core::bool* #t68 = #t67.{core::Set::add}(inf::field7) in let final core::bool* #t69 = #t67.{core::Set::add}(null) in #t67;
  core::Set<core::int?> local2h = let final core::Set<core::int?> #t70 = col::LinkedHashSet::•<core::int?>() in let final core::bool* #t71 = #t70.{core::Set::add}(inf::field8) in let final core::bool* #t72 = #t70.{core::Set::add}(null) in #t70;
  core::Set<inf::C<dynamic>?> local3a = let final core::Set<inf::C<dynamic>?> #t73 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final core::bool* #t74 = #t73.{core::Set::add}(null) in let final core::bool* #t75 = #t73.{core::Set::add}(inf::field1) in #t73;
  core::Set<inf::C<dynamic>?> local3b = let final core::Set<inf::C<dynamic>?> #t76 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final core::bool* #t77 = #t76.{core::Set::add}(null) in let final core::bool* #t78 = #t76.{core::Set::add}(inf::field2) in #t76;
  core::Set<inf::C<core::int>?> local3c = let final core::Set<inf::C<core::int>?> #t79 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final core::bool* #t80 = #t79.{core::Set::add}(null) in let final core::bool* #t81 = #t79.{core::Set::add}(inf::field3) in #t79;
  core::Set<inf::C<core::int>?> local3d = let final core::Set<inf::C<core::int>?> #t82 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final core::bool* #t83 = #t82.{core::Set::add}(null) in let final core::bool* #t84 = #t82.{core::Set::add}(inf::field4) in #t82;
  core::Set<inf::C<core::int?>?> local3e = let final core::Set<inf::C<core::int?>?> #t85 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final core::bool* #t86 = #t85.{core::Set::add}(null) in let final core::bool* #t87 = #t85.{core::Set::add}(inf::field5) in #t85;
  core::Set<inf::C<core::int?>?> local3f = let final core::Set<inf::C<core::int?>?> #t88 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final core::bool* #t89 = #t88.{core::Set::add}(null) in let final core::bool* #t90 = #t88.{core::Set::add}(inf::field6) in #t88;
  core::Set<core::int?> local3g = let final core::Set<core::int?> #t91 = col::LinkedHashSet::•<core::int?>() in let final core::bool* #t92 = #t91.{core::Set::add}(null) in let final core::bool* #t93 = #t91.{core::Set::add}(inf::field7) in #t91;
  core::Set<core::int?> local3h = let final core::Set<core::int?> #t94 = col::LinkedHashSet::•<core::int?>() in let final core::bool* #t95 = #t94.{core::Set::add}(null) in let final core::bool* #t96 = #t94.{core::Set::add}(inf::field8) in #t94;
}
