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

static field dynamic h = null;
static method foo((core::Object*) →* core::int* f) → void {}
static method test() → dynamic {
  (core::Object*) →* core::Null* f = (core::Object* x) → core::Null* {
    return null;
  };
  core::String* y = f.call(42);
  f = (core::Object* x) → core::Null* => "hello" as{TypeError} core::Null*;
  self::foo((core::Object* x) → core::Null* {
    return null;
  });
  self::foo((core::Object* x) → core::Null* {
    throw "not implemented";
  });
}
static method main() → dynamic {}
