library;
import self as self;
import "dart:core" as core;

extension type ET(core::int? i) {
  abstract extension-type-member representation-field get i() → core::int?;
  constructor • = self::ET|constructor#;
  constructor tearoff • = self::ET|constructor#_#new#tearOff;
}
static const field dynamic a = const self::ET|constructor#(null);
static const field dynamic b = const self::ET|constructor#(0);
static const field core::List<core::int?> c = const <core::int?>[self::a as{TypeError,ForDynamic} core::int?, self::b as{TypeError,ForDynamic} core::int?];
static extension-type-member method ET|constructor#(core::int? i) → self::ET% /* erasure=core::int?, declared=! */ {
  lowered final self::ET% /* erasure=core::int?, declared=! */ #this = i;
  return #this;
}
static extension-type-member method ET|constructor#_#new#tearOff(core::int? i) → self::ET% /* erasure=core::int?, declared=! */
  return self::ET|constructor#(i);


Extra constant evaluation status:
Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///nullable_constant.dart:7:19 -> NullConstant(null)
Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///nullable_constant.dart:8:19 -> IntConstant(0)
Evaluated: ListLiteral @ org-dartlang-testcase:///nullable_constant.dart:9:22 -> ListConstant(const <int?>[null, 0])
Extra constant evaluation: evaluated: 7, effectively constant: 3
