protected override void HandleChooser()
		{
			if (m_flid == LexEntryRefTags.kflidComponentLexemes)
			{
				using (LinkEntryOrSenseDlg dlg = new LinkEntryOrSenseDlg())
				{
					ILexEntry le = null;
					if (m_obj.ClassID == LexEntryTags.kClassId)
					{
						// filter this entry from the list.
						le = m_obj as ILexEntry;
					}
					else
					{
						// assume the owner is the entry (e.g. owner of LexEntryRef)
						le = m_obj.OwnerOfClass<ILexEntry>();
					}
					dlg.SetDlgInfo(m_cache, m_mediator, le);
					String str = ShowHelp.RemoveSpaces(this.Slice.Label);
					dlg.SetHelpTopic("khtpChooseLexicalEntryOrSense-" + str);
					if (dlg.ShowDialog(FindForm()) == DialogResult.OK)
						AddItem(dlg.SelectedObject);
				}
			}
			else if (m_flid == LexEntryRefTags.kflidPrimaryLexemes)
			{
				string displayWs = "analysis vernacular";
				if (m_configurationNode != null)
				{
					XmlNode node = m_configurationNode.SelectSingleNode("deParams");
					if (node != null)
						displayWs = XmlUtils.GetAttributeValue(node, "ws", "analysis vernacular").ToLower();
				}
				ILexEntryRef ler = m_obj as ILexEntryRef;
				Debug.Assert(ler != null);
				var labels = ObjectLabel.CreateObjectLabels(m_cache, ler.ComponentLexemesRS.Cast<ICmObject>(),
					m_displayNameProperty, displayWs);
				using (ReallySimpleListChooser chooser = new ReallySimpleListChooser(null,
					labels, "PrimaryLexemes", m_cache, ler.PrimaryLexemesRS.Cast<ICmObject>(),
					false, m_mediator.HelpTopicProvider))
				{
					chooser.HideDisplayUsageCheckBox();
					chooser.SetObjectAndFlid(m_obj.Hvo, m_flid);	// may set TextParamHvo
					chooser.Text = LexEdStrings.ksChooseWhereToShowSubentry;
					chooser.SetHelpTopic(Slice.GetChooserHelpTopicID());
					chooser.InitializeExtras(null, Mediator);
					chooser.AddLink(LexEdStrings.ksAddAComponent, ReallySimpleListChooser.LinkType.kDialogLink,
						new AddPrimaryLexemeChooserCommand(m_cache, false, null, m_mediator, m_obj, FindForm()));
					DialogResult res = chooser.ShowDialog();
					if (DialogResult.Cancel == res)
						return;
					if (chooser.ChosenObjects != null)
						SetItems(chooser.ChosenObjects);
				}
			}
			else
			{
				string fieldName = m_obj.Cache.MetaDataCacheAccessor.GetFieldName(m_flid);
				Debug.Assert(m_obj is ILexEntry || m_obj is ILexSense);
				switch(fieldName)
				{
					case "ComplexFormEntries":
						using (var dlg = new EntryGoDlg())
						{
							dlg.StartingEntry = m_obj as ILexEntry ?? (m_obj as ILexSense).Entry;
							dlg.SetDlgInfo(m_cache, null, m_mediator);
							String str = ShowHelp.RemoveSpaces(Slice.Label);
							dlg.SetHelpTopic("khtpChooseComplexFormEntryOrSense-" + str);
							dlg.SetOkButtonText(LexEdStrings.ksMakeComponentOf);
							if (dlg.ShowDialog(FindForm()) == DialogResult.OK)
							{
								try
								{
									UndoableUnitOfWorkHelper.Do(LexEdStrings.ksUndoAddComplexForm, LexEdStrings.ksRedoAddComplexForm,
										m_obj.Cache.ActionHandlerAccessor,
										() => ((ILexEntry)dlg.SelectedObject).AddComponent(m_obj));
								}
								catch (ArgumentException)
								{
									MessageBoxes.ReportLexEntryCircularReference((ILexEntry) dlg.SelectedObject, m_obj, false);
								}
							}
						}
						break;
					case "VisibleComplexFormEntries": // obsolete?
					case "Subentries":
						HandleChooserForBackRefs(fieldName, false);
						break;
					case "VisibleComplexFormBackRefs":
						HandleChooserForBackRefs(fieldName, true);
						break;
					default:
						Debug.Fail("EntrySequenceReferenceLauncher should only be used for variants, components, or complex forms");
						break;
				}
			}
		}
		public override ObjectLabel Execute()
		{
			ObjectLabel result = null;
			if (m_lexEntry != null)
			{
				using (var dlg = new EntryGoDlg())
				{
					dlg.SetDlgInfo(m_cache, null, m_mediator);
					dlg.SetHelpTopic("khtpChooseLexicalEntryOrSense"); // TODO: When LT-11318 is fixed, use its help topic ID.
					dlg.SetOkButtonText(LexEdStrings.ksMakeComponentOf);
					if (dlg.ShowDialog(m_parentWindow) == DialogResult.OK)
					{
						try
						{
							if (m_lexSense != null)
							{
								UndoableUnitOfWorkHelper.Do(LexEdStrings.ksUndoAddComplexForm, LexEdStrings.ksRedoAddComplexForm,
								m_lexEntry.Cache.ActionHandlerAccessor,
								() => ((ILexEntry)dlg.SelectedObject).AddComponent((ICmObject)m_lexSense ?? m_lexEntry));
							}
							else
							{
								UndoableUnitOfWorkHelper.Do(LexEdStrings.ksUndoAddComplexForm, LexEdStrings.ksRedoAddComplexForm,
								m_lexEntry.Cache.ActionHandlerAccessor,
								() => ((ILexEntry)dlg.SelectedObject).AddComponent(m_lexEntry));
							}
						}
						catch (ArgumentException)
						{
							MessageBoxes.ReportLexEntryCircularReference((ILexEntry)dlg.SelectedObject, m_lexEntry, false);
						}
					}
				}
			}
			return result;
		}