library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;

typedef b = core::int;
typedef c = core::String;
static method f(dynamic a, [dynamic b = #C1]) → core::String
  return "${a}, ${b}";
static method a<T1 extends core::Object? = dynamic, T2 extends core::Object? = dynamic>(core::int x) → core::String {
  return "a<${self::a::T1%}, ${self::a::T2%}>(${x})";
}
static method main() → dynamic {
  self::expect("${#C3}, null", self::f((#C3).{core::Object::toString}(){() → core::String}));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
    throw "Expected ${expected}, actual ${actual}";
}

constants  {
  #C1 = null
  #C2 = static-tearoff self::a
  #C3 = instantiation self::a <core::int, core::String>
}
