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

import "package:expect/expect.dart";

static const field core::int b = #C1;
static method fn(core::int a) → core::int {
  if(a.{core::num::==}(1))
    return 1;
  return a.{core::num::*}(self::fn(a.{core::num::-}(1)));
}
static method localTest() → core::int {
  function fnLocal(core::int a) → core::int {
    if(a.{core::num::==}(1))
      return 1;
    return a.{core::num::*}(fnLocal.call(a.{core::num::-}(1)));
  }
  return #C1;
}
static method main() → void {
  exp::Expect::equals(#C1, 24);
  exp::Expect::equals(self::localTest(), 24);
}

constants  {
  #C1 = 24
}
