library test;
import self as self;
import "dart:core" as core;
import "dart:async" as asy;

abstract class MyStream<T extends core::Object = dynamic> extends asy::Stream<self::MyStream::T> {
  static factory •<T extends core::Object = dynamic>() → self::MyStream<self::MyStream::•::T>
    return null;
}
static method foo() → asy::Stream<core::List<core::int>> async* {
  yield<dynamic>[];
  yield self::MyStream::•<dynamic>();
  yield*<dynamic>[];
  yield* self::MyStream::•<dynamic>();
}
static method bar() → core::Iterable<core::Map<core::int, core::int>> sync* {
  yield<dynamic, dynamic>{};
  yield core::List::•<dynamic>();
  yield*<dynamic, dynamic>{};
  yield* core::List::•<dynamic>();
}
static method main() → dynamic {}
