library;
//
// Problems in library:
//
// pkg/front_end/testcases/rasta/super_operator.dart:22:15: Error: Superclass has no method named '[]'.
//   g() => super[0];
//               ^
//
import self as self;
import "dart:core" as core;

class A extends core::Object {
  synthetic constructor •() → self::A*
    : super core::Object::•()
    ;
  operator +(core::String* s) → dynamic
    return null;
  operator [](dynamic i) → dynamic
    return null;
  operator []=(dynamic i, dynamic val) → void {}
}
class B extends self::A {
  synthetic constructor •() → self::B*
    : super self::A::•()
    ;
  operator +(core::String* s) → dynamic
    return super.{self::A::+}("${s}${s}");
  operator [](dynamic i) → dynamic
    return super.{self::A::[]}(i);
  operator []=(dynamic i, dynamic val) → void
    return let final dynamic #t1 = let final dynamic #t2 = i in let final dynamic #t3 = i = #t2.+(1) in #t2 in let final dynamic #t4 = super.{self::A::[]}(#t1).+(val) in let final void #t5 = super.{self::A::[]=}(#t1, #t4) in #t4;
}
class Autobianchi extends core::Object {
  synthetic constructor •() → self::Autobianchi*
    : super core::Object::•()
    ;
  method g() → dynamic
    return super.[](0);
}
