code: func NewMenu() *Menu {
  	menu := Menu{}
  	menuCreate := Command{
  		Action:     "create",
  		ObjectType: "menu",
  	}
  	menu.Sync = MenuSync{
  		ReadyChan:        make(chan bool),
  		DisplayedChan:    make(chan bool),
  		ChildStableChan:  make(chan uint),
  		TreeStableChan:   make(chan bool),
  		ReadyQueue:       make([]*Command, 0),
  		DisplayedQueue:   make([]*Command, 0),
  		ChildStableQueue: make([]*ChildCommand, 0),
  		TreeStableQueue:  make([]*Command, 0),
  	}
  	menu.ReplyHandlers = make(map[uint]func(reply CommandResponse, item *MenuItem))
  	menu.SetSendChannel(connection.GetInputChannels())
  	menu.WaitingResponses = append(menu.WaitingResponses, &menuCreate)
  	dispatcher.RegisterHandler(menu.DispatchResponse)
  
  	go menu.SendThread()
  	menu.Send(&menuCreate)
  
  	return &menu
  }
docs: /*
  Create a new menu object.
  Dispatches a call to ThrustCore to generate the object and return the new
  TargetID in a reply.
  */