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,ForDynamic} 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,ForDynamic} 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));
}
