Walking depth-first can lead to cases where we inadvertently skip join fetching associations because we have already processed the "same" AssociationKey relative to a separate path branch.
See `org.hibernate.orm.test.sql.exec.onetoone.bidirectional.EntityWithBidirectionalOneToOneTest#testGetMother` , `#testGetAdoptedChild` and `#testHqlSelectMother` for examples. These fail after the changes for https://hibernate.atlassian.net/browse/HHH-14398 because we now walk the attributes in a different order. Previously it just "happened" to work.
One real solution would be to walk the fetchables width first. I.e....
```
Mother.adopted
Mother.biologicalChild
Mother.adopted.biologicalMother
Mother.adopted.stepMother
Mother.adopted.biologicalMother.adopted
Mother.adopted.biologicalMother.biologicalChild
Mother.adopted.stepMother.adopted
Mother.adopted.stepMother.biologicalChild
Mother.biologicalChild.mother
...
```
The point being to give higher precedence to the paths "closer" to the root