Properly performs *recursive* path compression