anchor.diff:    expect(manager.selectedIndex, equals(-1));
     expect(manager.hasSelection, isFalse);
     expect(manager.any((s) => s.isSelected), isFalse);
  +}
  +
  +void _expectNoSelectionChanges(List<ChangeRecord> changes) {
  +  var safeChanges = (changes == null) ? [] : changes;
  +
  +  var propChangeSymbols = safeChanges
  +      .where((ChangeRecord cr) => cr is PropertyChangeRecord)
  +      .map((PropertyChangeRecord pcr) => pcr.field)
  +      .toList();
  +
  +  const selectChangeFields = const [const Symbol('hasSelection'),
  +                                    const Symbol('selectedIndex'),
  +                                    const Symbol('selectedItem')];
  +
  +  selectChangeFields.forEach((field) {
  +    expect(propChangeSymbols, isNot(contains(field)));
  +  });
   }
   
   void _expectSelection(SelectionManager manager) {
  
positive.code: import 'package:observe/observe.dart';
  import 'package:nv/src/shared.dart';
  import 'package:unittest/unittest.dart';
  
  void main() {
    SelectionManager<int> manager;
  
negative.code:     expect(manager[i].value, equals(manager.source[i]));
    }
  }
  
  const _LENGTH = const Symbol('length');
  
  final _lengthChange = new PropertyChangeRecord(_LENGTH);
  
  ListChangeRecord _change(index, {removedCount: 0, addedCount: 0}) =>
      new ListChangeRecord(index, removedCount: removedCount,
          addedCount: addedCount);
  