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

static method test() → dynamic {
  function f0() → core::int*
    return 42;
  function f1() → asy::Future<core::int*>* async 
    return 42;
  function f2() → core::int* {
    return 42;
  }
  function f3() → asy::Future<core::int*>* async {
    return 42;
  }
  function f4() → core::Iterable<core::int*>* sync* {
    yield 42;
  }
  function f5() → asy::Stream<core::int*>* async* {
    yield 42;
  }
  function f6() → core::num*
    return 42;
  function f7() → dynamic
    return f7.call();
  function f8() → asy::Stream<core::int*>*
    return f5.call();
  () →* core::int* v0 = f0;
  () →* asy::Future<core::int*>* v1 = f1;
  () →* core::int* v2 = f2;
  () →* asy::Future<core::int*>* v3 = f3;
  () →* core::Iterable<core::int*>* v4 = f4;
  () →* asy::Stream<core::int*>* v5 = f5;
  () →* core::num* v6 = f6;
  () →* dynamic v7 = f7;
  () →* asy::Stream<core::int*>* v8 = f8;
}
static method main() → dynamic {}
