In _retainChildren, the recursive call passes i, j instead of 2 * x + i, 2 * y + j.
This means when looking for z+2 fallback tiles, it searches completely wrong coordinates. For example, a tile at (100, 200, z=10) should look for children at (400-403, 800-803) at z=12, but instead it searches around (0-3, 0-3).
_retainAncestor does this correctly, so it looks like a copy-paste mistake.
PR: #2174