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

extension E<T extends core::Object? = dynamic> on T% {
  get f = self::E|get#f;
}
static extension-member method E|get#f<T extends core::Object? = dynamic>(lowered final self::E|get#f::T% #this) → (self::E|get#f::T%) → self::E|get#f::T%
  return (self::E|get#f::T% t) → self::E|get#f::T% => t;
static method method1<S extends core::Object? = dynamic>(self::method1::S% s) → dynamic {
  (self::method1::S%) → self::method1::S% f = self::E|get#f<self::method1::S%>(s);
}
static method method2<S extends dynamic>(self::method2::S% s) → dynamic {
  self::throws(() → void => s{dynamic}.f);
}
static method main() → dynamic {}
static method throws(() → void f) → dynamic {
  try {
    f(){() → void};
  }
  on core::Object catch(final core::Object e) {
    return;
  }
  throw "Expected exception";
}
