anchor.diff:  import 'package:observe/observe.dart';
   import 'package:nv/src/shared.dart';
   import 'package:unittest/unittest.dart';
  +
  +import '../src/observe_test_utils.dart';
   
   void main() {
     SelectionManager<int> manager;
  
positive.code:     expect(manager[i].value, equals(manager.source[i]));
    }
  }
  
negative.code:     _expectPropChanges(changes, []);
  
    });
    test('no selection with collection changes', () {
  
      _expectNoSelection(manager);
  
      manager.source.add(6);
      deliverChanges();
  
      expectChanges(changes, [_lengthChange, _change(5, addedCount: 1)]);
      _expectNoSelectionChanges(changes);
      _expectNoSelection(manager);
  
      manager.source.remove(6);
      deliverChanges();
  
      expectChanges(changes, [_lengthChange, _change(5, removedCount: 1)]);
      _expectNoSelectionChanges(changes);
      _expectNoSelection(manager);
  
      manager.source.insert(0, 0);
      deliverChanges();
  
      expectChanges(changes, [_lengthChange, _change(0, addedCount: 1)]);
      _expectNoSelectionChanges(changes);
      _expectNoSelection(manager);
  
      manager.source[0] = 10;
      deliverChanges();
  
      // silly double check
      expect(manager[0].value, 10);
  
      expectChanges(changes, [_change(0, addedCount: 1, removedCount: 1)]);
      _expectNoSelectionChanges(changes);
      _expectNoSelection(manager);
  
      manager.source.removeAt(0);
      deliverChanges();
  
      expectChanges(changes, [_lengthChange, _change(0, removedCount: 1)]);
      _expectNoSelectionChanges(changes);
      _expectNoSelection(manager);
  
    });
  }
  
  void _expectPropChanges(List<ChangeRecord> changes, List<Symbol> propNames) {
  