Ptr(sub *unmarshalInfo, name string) unmarshaler {  return func(b []byte, f pointer, w int) ([]byte, error) {   if w != WireStartGroup {    return b, errInternalBadWireType   }   x, y := findEndGroup(b)   if x < 0 {    return nil, io.ErrUnexpectedEOF   }   v := f.getPointer()   if v.isNil() {    v = valToPointer(reflect.New(sub.typ))    f.setPointer(v)   }   err := sub.unmarshal(v, b[:x])   if err != nil {    if r, ok := err.(*RequiredNotSetError); ok {     r.field = name + "." + r.field    } else {     return nil, err    }   }   return b[