code: func (w *Window) AddWidget(id string, x, y int) (Widgeter, error) {
  	rw, found := registeredWidgets[id]
  	if !found {
  		return nil, ErrWidgetNotRegistered
  	}
  	widget, err := rw(w, x, y)
  	if err != nil {
  		return nil, err
  	}
  	w.widgets = append(w.widgets, widget)
  	return widget, err
  }
docs: // AddWidget is the generic function to add a widget to a window.  This
  // function should only be called by widgets.  Application code, by convention,
  // should call the non-generic type asserted call (i.e. AddLabel).
  // AddWidget shall be called from queue context.