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

static method main() → void {
  {
    function f<T extends core::Object? = dynamic>(T% x) → T%
      return throw "";
    <T extends core::Object? = dynamic>(T%) → T% v1 = f;
    v1 = <S extends core::Object? = dynamic>(S% x) → S% => x;
  }
  {
    function f<T extends core::Object? = dynamic>(T% x) → core::List<T%>
      return throw "";
    <T extends core::Object? = dynamic>(T%) → core::List<T%> v2 = f;
    v2 = <S extends core::Object? = dynamic>(S% x) → core::List<S%> => core::_GrowableList::_literal1<S%>(x);
    core::Iterable<core::int> r = v2<core::int>(42){(core::int) → core::List<core::int>};
    core::Iterable<core::String> s = v2<core::String>("hello"){(core::String) → core::List<core::String>};
    core::Iterable<core::List<core::int>> t = v2<core::List<core::int>>(core::_GrowableList::•<core::int>(0)){(core::List<core::int>) → core::List<core::List<core::int>>};
    core::Iterable<core::num> u = v2<core::num>(42){(core::num) → core::List<core::num>};
    core::Iterable<core::num> v = v2<core::num>(42){(core::num) → core::List<core::num>};
  }
}
