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