code: func (encoder *mapEncoder) encodeBucketPtrSlice(ctx context.Context, space []byte, ptr unsafe.Pointer) []byte {
  	header := (*sliceHeader)(ptr)
  	space = append(space, `{"data":{"__ptr__":"`...)
  	ptrStr := ptrToStr(uintptr(header.data))
  	space = append(space, ptrStr...)
  	space = append(space, `"},"len":`...)
  	space = jsonfmt.WriteInt64(space, int64(header.len))
  	space = append(space, `,"cap":`...)
  	space = jsonfmt.WriteInt64(space, int64(header.cap))
  	space = append(space, `}`...)
  	data := encoder.encodeBucketPtrArray(ctx, nil, header.len, header.data)
  	if uintptr(header.data) != 0 {
  		addrMap := ctx.Value(addrMapKey).(map[string]json.RawMessage)
  		addrMap[ptrStr] = json.RawMessage(data)
  	}
  	return space
  }
docs: // []*bmap