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

static method map<T extends core::Object* = dynamic>(() →* self::map::T* f1, () →* self::map::T* f2) → self::map::T* {}
static method id<T extends core::Object* = dynamic>(self::id::T* t) → dynamic
  return t;
static method foo() → Null
  return null;
static method main() → dynamic {
  self::map<Null>(() → Null {}, () → <BottomType>=> throw "hello");
  self::map<Null>(() → <BottomType>=> throw "hello", () → Null {});
  () →* Null f = () → Null {};
  self::map<Null>(#C1, () → <BottomType>=> throw "hello");
  self::map<Null>(() → <BottomType>=> throw "hello", #C1);
  self::map<Null>(() → Null {
    return null;
  }, () → <BottomType>=> throw "hello");
  self::map<Null>(() → <BottomType>=> throw "hello", () → Null {
    return null;
  });
  self::id<() →* Null>(() → Null {});
}

constants  {
  #C1 = tearoff self::foo
}
