library /*isNonNullableByDefault*/;
import self as self;
import "dart:async" as asy;
import "dart:core" as core;

static method foo1() → asy::Future<void> async /* futureValueType= void */ {
  await 6;
}
static method foo2() → asy::Future<core::int> async /* futureValueType= core::int */ {
  return (await 6).{core::num::+}(3){(core::num) → core::int};
}
static method foo3() → asy::Future<void> async /* futureValueType= void */ {
  #L1:
  await for (final dynamic x in new asy::_EmptyStream::•<dynamic>()) {
    break #L1;
  }
}
static method foo4() → asy::Future<core::int> async /* futureValueType= core::int */ {
  try {
    return 3;
  }
  finally {
    return 2;
  }
}
static method foo5() → asy::Future<core::int> async /* futureValueType= core::int */ {
  try {
    return 3;
  }
  on core::Object catch(final core::Object e) {
    return 2;
  }
}
static method main() → void {
  self::foo1();
  self::foo2();
  self::foo3();
  self::foo4();
  self::foo5();
}
