library;
import self as self;
import "dart:core" as core;
import "mixed_mode_hierarchy_generic_methods_lib.dart" as mix;
import "dart:async" as asy;

import "org-dartlang-testcase:///mixed_mode_hierarchy_generic_methods_lib.dart";
import "dart:async";

class B extends core::Object implements mix::A<core::int*> {
  synthetic constructor •() → self::B*
    : super core::Object::•()
    ;
  method then<B extends core::Object* = dynamic>() → asy::Future<self::B::then::B*>*
    return asy::Future::value<self::B::then::B*>();
}
static method main() → dynamic {}

library /*isNonNullableByDefault*/;
import self as mix;
import "dart:core" as core;
import "dart:async" as asy;

class A<R extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → mix::A<mix::A::R%>
    : super core::Object::•()
    ;
  method then<T extends core::Object? = dynamic>() → asy::Future<mix::A::then::T%>
    return asy::Future::value<mix::A::then::T%>();
}
