Copies the internal list before mutating so it detects the new reference.
@override void operator []=(int index, T v) { final copy = [..._internalList]; copy[index] = v; _emitList(copy); }