This implementation is indeed not symmetric, but the one from `Position` seems symmetric to me.