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