library test;
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 null;
static method main() → dynamic {
  (core::num*) →* core::List<core::int*>* v = self::generic<(core::num*) →* core::List<core::int*>*>(((core::int*) →* core::Iterable<core::num*>* f) → core::Null? => null, ((core::double*) →* core::List<core::int*>* g) → core::Null? => null);
}
