reflect.Indirect unwraps a pointer into the reflect.Value it references and returns non-pointer values unchanged. This lets reflection code normalize unknown inputs before inspecting their types, kinds, or fields. section 13.1.3
Normalize a value before walking it
A recursive struct walker can begin with `val := reflect.Indirect(reflect.ValueOf(u))`. It then obtains `val.Type()` and examines `val.Kind()`. For a `*Person`, the normalized value is `Person`; for a `MyInt`, it remains `MyInt`. The same step therefore supports both pointer-backed and direct values. section 13.1.3
