internal/llreflect/chase.go (10 lines of code) (raw):

package llreflect import ( "reflect" ) // ChaseValue takes a value and returns the underlying type even if it is nested inpointers or wrapped in interface{} func ChaseValue(v reflect.Value) reflect.Value { for (v.Kind() == reflect.Ptr || v.Kind() == reflect.Interface) && !v.IsNil() { v = v.Elem() } return v }