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

static method main() → void {
  {
    function f<T extends core::Object* = dynamic>(T* x) → T*
      return null;
    <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 null;
    <T extends core::Object* = dynamic>(T*) →* core::List<T*>* v2 = f;
    v2 = <S extends core::Object* = dynamic>(S* x) → core::List<S*>* => <S*>[x];
    core::Iterable<core::int*>* r = v2.call<core::int*>(42);
    core::Iterable<core::String*>* s = v2.call<core::String*>("hello");
    core::Iterable<core::List<core::int*>*>* t = v2.call<core::List<core::int*>*>(<core::int*>[]);
    core::Iterable<core::num*>* u = v2.call<core::num*>(42);
    core::Iterable<core::num*>* v = v2.call<core::num*>(42);
  }
}
