What happens if `setQuery(Query)` is called twice? I suspect it might do something nasty with the existing value of `srIter`. If it isn't safe to call twice, we should make it impossible by putting it in the constructor or throwing something if it is called when `srIter != null`. Another option would be a builder, but that might be overkill.