library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;

class Foo<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
  final field (core::String) → self::Foo::T% _foo;
  const constructor •((core::String) →? self::Foo::T% foo) → self::Foo<self::Foo::T%>
    : self::Foo::_foo = let final (core::String) →? self::Foo::T% #t1 = foo in #t1 == null ?{(core::String) → self::Foo::T%} #C1<self::Foo::T%> : #t1{(core::String) → self::Foo::T%}, super core::Object::•()
    ;
}
static method bar<T extends core::Object? = dynamic>(core::String o) → self::bar::T%
  return o as{ForNonNullableByDefault} self::bar::T%;
static method main() → void {
  const self::Foo<core::int> myValue = #C10;
}

constants  {
  #C1 = static-tearoff self::bar
  #C2 = "baz"
  #C3 = eval const core::bool::fromEnvironment(#C2)
  #C4 = static-tearoff core::int::parse
  #C5 = null
  #C6 = eval #C3 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
  #C7 = eval #C6 == null
  #C8 = eval #C1<core::int*>
  #C9 = eval #C7 ?{(core::String) → core::int*} #C8 : #C6
  #C10 = eval self::Foo<core::int*>{_foo:#C9}
}


Constructor coverage from constants:
org-dartlang-testcase:///issue_49245.dart:
- Foo. (from org-dartlang-testcase:///issue_49245.dart:6:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
