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

class Foo extends core::Object {
  const constructor •(core::List<core::String> l) → self::Foo
    : super core::Object::•()
    ;
}
static method test() → void {
  for (@self::Foo::•(const <dynamic>[]) core::int i = 0; i.<(1); i = i.+(1)) {
  }
  for (@self::Foo::•(const <dynamic>[]) core::int i in <dynamic>[0]) {
  }
}
static method main() → dynamic {}
