library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
import "package:expect/expect.dart" as exp;

import "package:expect/expect.dart";

class G<T extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::G<self::G::T%>
    : super core::Object::•()
    ;
}
class A extends core::Object {
  synthetic constructor •() → self::A
    : super core::Object::•()
    ;
}
class B extends self::A {
  synthetic constructor •() → self::B
    : super self::A::•()
    ;
}
class C extends self::B {
  synthetic constructor •() → self::C
    : super self::B::•()
    ;
}
static method main() → dynamic {
  exp::Expect::isFalse(new self::G::•<self::B>() is{ForNonNullableByDefault} self::G<self::C>);
  exp::Expect::isFalse(new self::G::•<self::A>() is{ForNonNullableByDefault} self::G<self::B>);
  exp::Expect::isFalse(new self::G::•<self::A>() is{ForNonNullableByDefault} self::G<self::C>);
  exp::Expect::isFalse(new self::G::•<core::Object>() is{ForNonNullableByDefault} self::G<self::B>);
  exp::Expect::isFalse(new self::G::•<core::int>() is{ForNonNullableByDefault} self::G<self::B>);
  exp::Expect::isFalse(new self::G::•<core::int>() is{ForNonNullableByDefault} self::G<core::double>);
  exp::Expect::isFalse(new self::G::•<core::int>() is{ForNonNullableByDefault} self::G<core::String>);
}
