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

typedef F = (core::int) → core::Iterable<core::num>;
typedef G = (core::double) → core::List<core::int>;
static method generic<T extends core::Object? = dynamic>((self::generic::T%) → dynamic a, (self::generic::T%) → dynamic b) → self::generic::T%
  return throw "";
static method test() → dynamic {
  (core::num) → core::List<core::int> v = self::generic<(core::num) → core::List<core::int>>(((core::int) → core::Iterable<core::num> f) → Null => null, ((core::double) → core::List<core::int> g) → Null => null);
}
