|  | // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  |  | 
|  | import "package:expect/expect.dart"; | 
|  |  | 
|  | class B { | 
|  | int value; | 
|  | List trace; | 
|  | B(this.trace) : value = 100; | 
|  | operator [](index) { | 
|  | trace.add(-3); | 
|  | trace.add(index); | 
|  | trace.add(this.value); | 
|  | this.value = this.value + 1; | 
|  | return this; | 
|  | } | 
|  |  | 
|  | operator []=(index, value) { | 
|  | trace.add(-5); | 
|  | trace.add(index); | 
|  | trace.add(value.value); | 
|  | this.value = this.value + 1; | 
|  | } | 
|  |  | 
|  | operator +(int value) { | 
|  | trace.add(-4); | 
|  | trace.add(this.value); | 
|  | trace.add(value); | 
|  | this.value = this.value + 1; | 
|  | return this; | 
|  | } | 
|  | } | 
|  |  | 
|  | B getB(trace) { | 
|  | trace.add(-1); | 
|  | return new B(trace); | 
|  | } | 
|  |  | 
|  | int getIndex(trace) { | 
|  | trace.add(-2); | 
|  | return 42; | 
|  | } | 
|  |  | 
|  | main() { | 
|  | List trace = []; | 
|  | getB(trace)[getIndex(trace)] += 37; | 
|  |  | 
|  | Expect.listEquals([-1, -2, -3, 42, 100, -4, 101, 37, -5, 42, 102], trace); | 
|  | } |