Ah, so I'm making a distinction between public visibility (from Ruby's standpoint) and the public API (from a user of the library's standpoint). Unfortunately since Ruby doesn't have a concept of “package private”, the two don't always line up—I generally use YARDoc's `@api private` or `@private` declarations to mark methods that have public visibility but are not part of the public API (in this case, `::hydrate` and `#hydrate` are both marked `@private`).

So I'm totally down with the changes you made to the implementation; my only objection is to testing private APIs in the specs (I note that since I last looked you changed the comments on `::hydrate` to mark it as public; I would prefer not to do that). Can they be rewritten to expose the regression using the public code flow of `RecordSet`?