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 /* futureValueType= core::int* */ 
    return 42;
  function f2() → core::int* {
    return 42;
  }
  function f3() → asy::Future<core::int*>* async /* futureValueType= core::int* */ {
    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(){() →* dynamic};
  function f8() → asy::Stream<core::int*>*
    return f5(){() →* asy::Stream<core::int*>*};
  () →* 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 {}
