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

class GenericMethodBounds<T extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::GenericMethodBounds<self::GenericMethodBounds::T%>
    : super core::Object::•()
    ;
  get t() → core::Type
    return self::GenericMethodBounds::T%;
  method foo<covariant-by-class E extends self::GenericMethodBounds::T%>() → self::GenericMethodBounds<self::GenericMethodBounds::foo::E%>
    return new self::GenericMethodBounds::•<self::GenericMethodBounds::foo::E%>();
  method bar<E extends (self::GenericMethodBounds::T%) → void>() → self::GenericMethodBounds<self::GenericMethodBounds::bar::E>
    return new self::GenericMethodBounds::•<self::GenericMethodBounds::bar::E>();
}
class GenericMethodBoundsDerived extends self::GenericMethodBounds<core::num> {
  synthetic constructor •() → self::GenericMethodBoundsDerived
    : super self::GenericMethodBounds::•()
    ;
  method foo<covariant-by-class E extends core::num>() → self::GenericMethodBounds<self::GenericMethodBoundsDerived::foo::E>
    return new self::GenericMethodBounds::•<self::GenericMethodBoundsDerived::foo::E>();
  method bar<E extends (core::num) → void>() → self::GenericMethodBounds<self::GenericMethodBoundsDerived::bar::E>
    return new self::GenericMethodBounds::•<self::GenericMethodBoundsDerived::bar::E>();
}
static method main() → dynamic {}
