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

typedef IntToInt = (core::int) → core::int;
static method a() → (core::int) → core::int
  ;
static method b() → asy::Future<(core::int) → core::int>
  ;
static method c() → core::Iterable<(core::int) → core::int>
  ;
static method d() → core::Iterable<(core::int) → core::int>
  ;
static method e() → asy::Stream<(core::int) → core::int>
  ;
static method f() → asy::Stream<(core::int) → core::int>
  ;
static method main() → dynamic
  ;
