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 {}
