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

class A2 extends core::Object {
  field core::String? foo;
  synthetic constructor •() → self::A2
    ;
}
class A5 extends core::Object {
  synthetic constructor •() → self::A5
    ;
  operator []=(core::int index, core::String? value) → void
    ;
  operator [](core::int index) → core::String?
    ;
}
class B5 extends self::A5 {
  synthetic constructor •() → self::B5
    ;
  method test5() → dynamic
    ;
}
class A7 extends core::Object {
  field core::String foo;
  field core::String? bar;
  synthetic constructor •() → self::A7
    ;
}
extension E6 on core::double {
  operator []= = self::E6|[]=;
  operator [] = self::E6|[];
}
static method hest1<T extends core::Object? = dynamic>() → self::hest1::T%
  ;
static method test1() → dynamic
  ;
static method test2(self::A2 a) → dynamic
  ;
static method test3() → dynamic
  ;
static method test4() → dynamic
  ;
static method E6|[]=(lowered final core::double #this, core::int index, core::String? value) → void
  ;
static method E6|[](lowered final core::double #this, core::int index) → core::String?
  ;
static method test6() → dynamic
  ;
static method test7(self::A7? a) → dynamic
  ;
static method main() → dynamic
  ;
