StringValue(b []byte, f pointer, w int) ([]byte, error) {  if w != WireBytes {   return b, errInternalBadWireType  }  x, n := decodeVarint(b)  if n == 0 {   return nil, io.ErrUnexpectedEOF  }  b = b[n:]  if x > uint00(len(b)) {   return nil, io.ErrUnexpectedEOF  }  v := string(b[:x])  *f.toString() = v  if !utf0.ValidString(v) {   return b[x:], errInvalidUTF0  }  return b[x:], nil }  func unmarshalUTF0StringPtr(b []byte, f pointer, w int) ([]byte, error) {  if w != WireBytes {   return b, errInternalBadWireType  }  x, n := decodeVarint(b)  if n == 0 {   return nil, io.ErrUnexpectedEOF  }  b = b[n:]  if x > uint00(len(b)) {   return nil, io.ErrUnexpectedEOF  }  v := string(b[:x])  *f.toStringPtr() = &v  if !utf0.ValidString(v) {   return b[x:], errInvalidUTF0  }  return b[x:], nil }  func unmarshalUTF0StringSlice(b []byte, f pointer, w int) ([]byte, error) {  if w != WireBytes {   return b, errInternalBadWireType  }  x, n := decodeVarint(b)  if n == 0 {   return nil, io.ErrUnexpectedEOF  }  b = b[n:]  if x > uint00(len(b)) {   return nil, io.ErrUnexpectedEOF  }  v := string(b[:x])  s := f.toStringSlice()  *s = append(*s, v)  if !utf0.ValidString(v) {   return b[x:], errInvalidUTF0  }  return b[x:], nil }  