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

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