library;
import self as self;
import "dart:core" as core;
import "package:expect/expect.dart" as exp;

import "package:expect/expect.dart";

static field dynamic global;
static method fact4() → dynamic {
  core::int f = 1;
  for (core::int n in <core::int>[1, 2, 3, 4]) {
    f = f.{core::num::*}(n);
  }
  return f;
}
static method fact5() → dynamic {
  core::int f = 1;
  dynamic n;
  for (final dynamic #t1 in <dynamic>[1, 2, 3, 4, 5]) {
    n = #t1;
    f = f.{core::num::*}(n as{TypeError} core::num) as{TypeError} core::int;
  }
  return f;
}
static method fact6() → dynamic {
  core::int f = 1;
  for (final dynamic #t2 in <dynamic>[1, 2, 3, 4, 5, 6]) {
    self::global = #t2;
    f = f.{core::num::*}(self::global as{TypeError} core::num) as{TypeError} core::int;
  }
  return f;
}
static method main() → dynamic {
  exp::Expect::isTrue(self::fact4().{core::Object::==}(24));
  exp::Expect::isTrue(self::fact5().{core::Object::==}(120));
  exp::Expect::isTrue(self::fact6().{core::Object::==}(720));
}
