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

class ActionDispatcher<P extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::ActionDispatcher<self::ActionDispatcher::P%>
    : super core::Object::•()
    ;
  method call([covariant-by-class self::ActionDispatcher::P? value = #C1]) → void {}
}
class Bar extends core::Object {
  synthetic constructor •() → self::Bar
    : super core::Object::•()
    ;
}
class FooActions extends core::Object {
  synthetic constructor •() → self::FooActions
    : super core::Object::•()
    ;
  get foo() → self::ActionDispatcher<self::Bar>
    return new self::ActionDispatcher::•<self::Bar>();
}
static method main() → void {
  let final self::FooActions #t1 = new self::FooActions::•() in let final self::Bar #t2 = new self::Bar::•() in #t1.{self::FooActions::foo}{self::ActionDispatcher<self::Bar>}.{self::ActionDispatcher::call}(#t2){([self::Bar?]) → void};
  new self::FooActions::•().{self::FooActions::foo}{self::ActionDispatcher<self::Bar>}.{self::ActionDispatcher::call}(new self::Bar::•()){([self::Bar?]) → void};
  new self::FooActions::•().{self::FooActions::foo}{self::ActionDispatcher<self::Bar>}.{self::ActionDispatcher::call}(new self::Bar::•()){([self::Bar?]) → void};
}

constants  {
  #C1 = null
}
