Discussed with @arthurnn IRL. Looks like we can get a `CollectionProxy` in the instance var cache, so we need to distinguish the types here. We need to check in Rails 3 that `CollectionProxy` doesn't return `true` from `.is_a?(...::CollectionAssociation)` - otherwise this LGTM.