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

class A extends core::Object {
  constructor •() → void
    : super core::Object::•()
    ;
  operator +(core::String s) → dynamic
    return null;
  operator [](dynamic i) → dynamic
    return null;
  operator []=(dynamic i, dynamic val) → dynamic {}
}
class B extends self::A {
  constructor •() → void
    : super self::A::•()
    ;
  operator +(core::String s) → dynamic
    return this.{=self::A::+}("${s}${s}");
  operator [](dynamic i) → dynamic
    return this.{=self::A::[]}(i);
  operator []=(dynamic i, dynamic val) → dynamic
    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 dynamic #t5 = super.{self::A::[]=}(#t1, #t4) in #t4;
}
class Autobianchi extends core::Object {
  constructor •() → void
    : super core::Object::•()
    ;
  method g() → dynamic
    return super.[](0);
}
