| bool b = true; | 
 |  | 
 | abstract class Map<K, V> { | 
 |   V operator [](K index); | 
 |   void operator []=(K index, V value); | 
 | } | 
 |  | 
 | extension Extension on int { | 
 |   Class operator [](Class cls) => new Class(); | 
 |   void operator []=(Class cls, Class value) {} | 
 | } | 
 |  | 
 | class Class { | 
 |   Class operator [](Class cls) => new Class(); | 
 |   void operator []=(Class cls, Class value) {} | 
 |   Class operator +(Class cls) => cls; | 
 |   void indexGetSetForEffect(Map<Class, Class> map) {} | 
 |   void indexGetSetForValue(Map<Class, Class> map) {} | 
 |   void implicitExtensionGetSetForEffect(int i) {} | 
 |   void implicitExtensionGetSetForValue(int i) {} | 
 |   void explicitExtensionGetSetForEffect(int i) {} | 
 |   void explicitExtensionGetSetForValue(int i) {} | 
 | } | 
 |  | 
 | class Subclass extends Class { | 
 |   void superIndexGetSetForEffect() {} | 
 |   void superIndexGetSetForValue() {} | 
 | } | 
 |  | 
 | extension Extension2 on Class2 { | 
 |   Class2 operator [](Class2 cls) => new Class2(); | 
 |   void operator []=(Class2 cls, Class2 value) {} | 
 | } | 
 |  | 
 | class Class2 { | 
 |   Class2 operator +(Class2 cls) => cls; | 
 |   void implicitExtensionGetSetForEffect() {} | 
 |   void implicitExtensionGetSetForValue() {} | 
 |   void explicitExtensionGetSetForEffect() {} | 
 |   void explicitExtensionGetSetForValue() {} | 
 | } | 
 |  | 
 | main() {} |