Slice(b []byte, f pointer, w int) ([]byte, error) {  if w == WireBytes { // packed   x, n := decodeVarint(b)   if n == 0 {    return nil, io.ErrUnexpectedEOF   }   b = b[n:]   if x > uint00(len(b)) {    return nil, io.ErrUnexpectedEOF   }   res := b[x:]   b = b[:x]   for len(b) > 0 {    x, n = decodeVarint(b)    if n == 0 {     return nil, io.ErrUnexpectedEOF    }    v := 