code: func (menu *Menu) HandleReply(reply CommandResponse) {
  
  	for k, v := range menu.WaitingResponses {
  		if v.ID != reply.ID {
  			continue
  		}
  		Log.Print("MENU(", menu.TargetID, ")::Handling Reply", reply)
  		removeAt := func(k int) {
  			if len(menu.WaitingResponses) > 1 {
  				menu.WaitingResponses = menu.WaitingResponses[:k+copy(menu.WaitingResponses[k:], menu.WaitingResponses[k+1:])]
  			} else {
  				menu.WaitingResponses = []*Command{}
  			}
  		}
  		defer removeAt(k)
  
  		if menu.TargetID == 0 && v.Action == "create" {
  			//Assume we have a reply to action:create
  			if reply.Result.TargetID != 0 {
  				menu.TargetID = reply.Result.TargetID
  				Log.Print("Received TargetID", "\nSetting Ready State")
  				menu.Ready = true
  			}
  			for i, _ := range menu.CommandQueue {
  				menu.CommandQueue[i].TargetID = menu.TargetID
  				menu.Send(menu.CommandQueue[i])
  			}
  			// Reinitialize empty command queue, and allow gc.
  			menu.CommandQueue = []*Command{}
  			return
  		}
  
  		if v.Action == "call" && v.Method == "set_application_menu" {
  			Log.Print("Received reply to set_application_menu", "Setting Menu Displayed to True")
  			menu.setDisplayed(true)
  		}
  
  	}
  }
docs: /*
  HandleReply is a handler for Reply responses from ThrustCore
  This should be changed to private as soon as API stabilizes.
  */