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

static method test(dynamic o) → dynamic async /* futureValueType= dynamic */ {
  for (dynamic x in o as{TypeError,ForDynamic} core::Iterable<dynamic>*) {
  }
  await for (dynamic x in o as{TypeError,ForDynamic} asy::Stream<dynamic>*) {
  }
  core::int* y;
  for (final dynamic #t1 in o as{TypeError,ForDynamic} core::Iterable<dynamic>*) {
    y = #t1 as{TypeError,ForDynamic} core::int*;
  }
  await for (final dynamic #t2 in o as{TypeError,ForDynamic} asy::Stream<dynamic>*) {
    y = #t2 as{TypeError,ForDynamic} core::int*;
  }
}
static method main() → dynamic {}
