library;
import self as self;
import "dart:core" as core;

import "package:expect/expect.dart";

class C<T extends core::Object* = dynamic> extends core::Object {
  field core::String* trace;
  constructor •({dynamic a, dynamic b}) → self::C<self::C::T*>*
    ;
}
class M extends core::Object {
  synthetic constructor •() → self::M*
    ;
}
class D = self::C<core::String*> with self::M {
  synthetic constructor •({dynamic a, dynamic b}) → self::D*
    : super self::C::•(a: a, b: b)
    ;
}
class E extends self::D {
  synthetic constructor •() → self::E*
    ;
}
abstract class _F&C&M = self::C<core::int*> with self::M {
  synthetic constructor •({dynamic a, dynamic b}) → self::_F&C&M*
    : super self::C::•(a: a, b: b)
    ;
}
class F extends self::_F&C&M {
  synthetic constructor •() → self::F*
    ;
}
static method main() → dynamic
  ;
