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

class Class extends core::Object {
  synthetic constructor •() → self::Class
    : super core::Object::•()
    ;
  method call<T extends core::Object? = dynamic>(self::Class::call::T% t) → self::Class::call::T%
    return t;
}
static field <T extends core::Object? = dynamic>(T%) → T% alias = #C1;
static method id<T extends core::Object? = dynamic>(self::id::T% t) → self::id::T%
  return t;
static method method((core::int) → core::int f) → dynamic {}
static method test() → dynamic {
  self::Class c = new self::Class::•();
  (core::int) → core::int f = self::alias<core::int>;
  (core::int) → core::int g;
  g = self::alias<core::int>;
  (core::int) → core::int h = (let final self::Class #t1 = c in #t1 == null ?{<T extends core::Object? = dynamic>(T%) → T%} null : #t1.{self::Class::call}{<T extends core::Object? = dynamic>(T%) → T%})<core::int>;
  g = (let final self::Class #t2 = c in #t2 == null ?{<T extends core::Object? = dynamic>(T%) → T%} null : #t2.{self::Class::call}{<T extends core::Object? = dynamic>(T%) → T%})<core::int>;
  self::method(self::alias<core::int>);
}
static method main() → dynamic {
  self::test();
}

constants  {
  #C1 = static-tearoff self::id
}
