code: func newMenu(parentCtx context.Context, rootID string, items []*MenuItemOptions, c *asticontext.Canceller, d *dispatcher, i *identifier, w *writer) (m *Menu) {
  	// Init
  	m = &Menu{newSubMenu(parentCtx, rootID, items, c, d, i, w)}
  
  	// Make sure the menu's context is cancelled once the destroyed event is received
  	m.On(EventNameMenuEventDestroyed, func(e Event) (deleteListener bool) {
  		m.cancel()
  		return true
  	})
  	return
  }
docs: // newMenu creates a new menu