This is unsafe, consider the following failing test:

```dart
// given
var data = new Data.fromMap({'id': 1});
var collection = new DataCollection.from([data]);
var filtered = new FilteredDataCollection(collection, (data) => data['id'] < 10);

// when
collection.remove(data);
data['id'] = 20;

// then
expect(filtered, equals([]));
```