implement deep readlink to eliminate repeating code
1.23.0
Merge branch 'release/1.23.0'