in walk.go [111:138]
func walkFullMap(mVal, rootVal reflect.Value, p llpath.Path, expandPaths bool, wo walkObserver) (err error) {
if mVal.Kind() != reflect.Map {
return fmt.Errorf("could not walk not map type for %s", mVal)
}
for _, kVal := range mVal.MapKeys() {
vVal := mVal.MapIndex(kVal)
k := kVal.String()
var newPath llpath.Path
if !expandPaths {
newPath = p.ExtendMap(k)
} else {
additionalPath, err := llpath.ParsePath(k)
if err != nil {
return err
}
newPath = p.Concat(additionalPath)
}
err = walkFull(vVal, rootVal, newPath, expandPaths, wo)
if err != nil {
return err
}
}
return nil
}