library;
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{for-error-handling} new _in::LateError::localNI("value");
    function #value#set(self::A::T% value#param) → dynamic {
      #value#isSet = true;
      return #value = value#param;
    }
    () → 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 {}
