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

static method foo(core::int/core::int* {int} x, core::int/core::int* {int} y) → core::int/core::int* {int} {
  dynamic/core::num* {int,double} z = x.+(y);
  return z.<<(4);
}
static method loop(core::List<dynamic>/core::List* {other} xs) → void/Null {
  core::int/core::int* {int} _ = xs.length;
  for (core::int/core::num* {int,double} i = 0; i.<(xs.length); i = i.+(1)) {
  }
}
static method main() → dynamic/Null {
  self::foo(4, 5);
  self::foo(6, 7);
  self::loop(<dynamic>["dfg"]);
}
