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(generic-covariant-impl self::A::T% value) → dynamic {}
  method foo() → dynamic {
    self::A::T? value;
    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.call());
    (() → Null {
      #value#set.call(this.{self::A::baz}());
    }).call();
    return result;
  }
}
static method main() → dynamic {}
