func (i *Shell) CreatePositioner() (*Positioner, error) {
	id := NewPositioner(i.Context())
	const opcode = 1
	const rLen = 8 + 4
	r := make([]byte, rLen)
	l := 0
	client.PutUint32(r[l:4], i.ID())
	l += 4
	client.PutUint32(r[l:l+4], uint32(rLen<<16|opcode&0x0000ffff))
	l += 4
	client.PutUint32(r[l:l+4], id.ID())
	l += 4
	err := i.Context().WriteMsg(r, nil)
	return id, err
}
CreatePositioner : create a positioner object

Create a positioner object. A positioner object is used to position
surfaces relative to some parent surface. See the interface description
and xdg_surface.get_popup for details.
package xdg_shell
import (
	"reflect"
	"github.com/rajveermalviya/go-wayland/wayland/client"
)
type Shell struct {
	client.BaseProxy
	pingHandlers []ShellPingHandlerFunc
}
func NewShell(ctx *client.Context) *Shell {
	zxdgShellV6 := &Shell{}
	ctx.Register(zxdgShellV6)
	return zxdgShellV6
}
func (i *Shell) Destroy() error {
	defer i.Context().Unregister(i)
	const opcode = 0
	const rLen = 8
	r := make([]byte, rLen)
	l := 0
	client.PutUint32(r[l:4], i.ID())
	l += 4
	client.PutUint32(r[l:l+4], uint32(rLen<<16|opcode&0x0000ffff))
	l += 4
	err := i.Context().WriteMsg(r, nil)
	return err
}