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

abstract class A<T extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::A<self::A::T%>
    : super core::Object::•()
    ;
  abstract method baz() → self::A::T%;
  method bar(covariant-by-class self::A::T% value) → dynamic {}
  method foo() → dynamic {
    lowered self::A::T? #value;
    lowered core::bool #value#isSet = false;
    function #value#get() → self::A::T%
      return #value#isSet ?{self::A::T%} #value{self::A::T%} : throw new _in::LateError::localNI("value");
    function #value#set(self::A::T% #t1) → dynamic {
      #value#isSet = true;
      return #value = #t1;
    }
    () → dynamic result = () → dynamic => this.{self::A::bar}(#value#get(){() → self::A::T%}){(self::A::T%) → dynamic};
    (() → Null {
      #value#set(this.{self::A::baz}(){() → self::A::T%}){(self::A::T%) → dynamic};
    })(){() → Null};
    return result;
  }
}
static method main() → dynamic {}
