library /*isNonNullableByDefault*/;
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 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";
}
