there is a bunch of duplication here so I guess we could at least put the `recycler != null` case in a a single method like
```
private <T> T registerNewPage(Recycler.V<T> v, int expectedSize) {
  cache = grow(cache, page + 1);
  assert cache[page] == null;
  cache[page] = v;
  assert v.v().length == expectedSize
  return v.v();
}
```