The `DatasetCore` interface description says it returns `Dataset`, but the description of `match` says _This method always returns a new DatasetCore_. My suggestion would be to make it return a `DatasetCore`, and to make the equivalent method in `Dataset` return a `Dataset`.