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

typedef IntFn = (core::int) → core::int;
typedef TFn = <T extends core::Object? = dynamic>(T%) → T%;
abstract class CompareBase extends core::Object {
  synthetic constructor •() → self::CompareBase
    : super core::Object::•()
    ;
  abstract operator <((core::int) → core::int f) → dynamic;
}
class Compare extends self::CompareBase {
  synthetic constructor •() → self::Compare
    : super self::CompareBase::•()
    ;
  @#C1
  operator <(core::Object f) → dynamic
    return f is <T extends core::Object? = dynamic>(T%) → T%;
}
static method id<T extends core::Object? = dynamic>(self::id::T% t) → self::id::T%
  return t;
static method test1(self::CompareBase x) → dynamic {
  {
    final synthesized self::CompareBase #0#0 = x;
    if(#0#0.{self::CompareBase::<}(#C3){((core::int) → core::int) → dynamic} as core::bool) {
      throw "\"<\" should receive instantiation, not generic function.";
    }
    else {
    }
  }
}
static method main() → dynamic {
  self::test1(new self::Compare::•());
}

constants  {
  #C1 = core::_Override {}
  #C2 = static-tearoff self::id
  #C3 = instantiation #C2 <core::int*>
}
