   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[