protected void AddRootAnatomicEntityNode()
		{
			if (_xmlDoc != null && _xmlDoc.AnnotationDescriptionXML2.Exists && _xmlDoc.AnnotationDescriptionXML2.First.anatomicEntityCollectionXML.Exists)
			{
				// 1-st top level node
				DropDownTreeNode node = new DropDownTreeNode(_select_text);
				int i = node.ComboBox.Items.Add(new ComboItem(_select_text));
				node.ComboBox.SelectedIndex = i;

				// 2-d actual data node
				foreach (anatomicEntityCollectionXMLType xmlAnatomicEntityCollection in _xmlDoc.AnnotationDescriptionXML2.First.anatomicEntityCollectionXML)
				{
					if (xmlAnatomicEntityCollection.AnatomicEntityXML2.Exists)
					{
						foreach (AnatomicEntityXML xmlAnatomicEntity in xmlAnatomicEntityCollection.AnatomicEntityXML2)
						{
							if (xmlAnatomicEntity.codeMeaning.Exists)
							{
								ComboItem comboItem = new ComboItem(xmlAnatomicEntity.codeMeaning.First.Value, xmlAnatomicEntity);
								node.ComboBox.Items.Add(comboItem);
							}
						}
					}
				}

				int nodeIdx = mainTree.Nodes.Add(node);

				// Set initial selection
				if (mainTree.SelectedNode == null)
					mainTree.SelectedNode = mainTree.Nodes[nodeIdx];
			}
			else if (mainTree.Nodes.Count == 0)
			{
				this.AddNoDataNode(mainTree.Nodes);
			}
		}
		private void mainTree_NodeValueChanged(object sender, EventArgs e)
		{
			DropDownTreeNode node = sender as DropDownTreeNode;

			if (node != null)
			{
				ComboItem comboTag = node.ComboBox.SelectedItem as ComboItem;
				this.SuspendLayout();
				node.Nodes.Clear();
				if (comboTag != null && comboTag.TagValue != null)
				{
					if (comboTag.TagValue is AnatomicEntityXML)
					{
						AnatomicEntityXML xmlAnatomicEntity = (AnatomicEntityXML)comboTag.TagValue;
						if (xmlAnatomicEntity.relatedAnatomicEntityXML.Exists)
						{
							DropDownTreeNode childNode = new DropDownTreeNode(_select_text);
							int i = childNode.ComboBox.Items.Add(new ComboItem(_select_text));
							childNode.ComboBox.SelectedIndex = i;
							foreach (AnatomicEntityXML xmlRelatedAnatomicEntity in xmlAnatomicEntity.relatedAnatomicEntityXML.First.AnatomicEntityXML2)
							{
								if (xmlRelatedAnatomicEntity.codeMeaning.Exists)
								{
									ComboItem comboItem = new ComboItem(xmlRelatedAnatomicEntity.codeMeaning.First.Value, xmlRelatedAnatomicEntity);
									childNode.ComboBox.Items.Add(comboItem);
								}
							}
							if (childNode.ComboBox.Items.Count > 1)
							{
								node.Nodes.Add(childNode);
								node.Expand();
							}
						}
					}
				}
				this.ResumeLayout();
				this.Update();

				EventsHelper.Fire(SelectedAnatomicEntitiesChanged, this, EventArgs.Empty);
			}
		}
        protected void AddRootImagingObservationNode()
        {
            if (_xmlDoc != null && _xmlDoc.AnnotationDescriptionXML2.Exists && _xmlDoc.AnnotationDescriptionXML2.First.imagingObservationCollectionXML.Exists)
            {
                DropDownTreeNode node = new DropDownTreeNode(_select_text);
                int i = node.ComboBox.Items.Add(new ComboItem(_select_text));
                node.ComboBox.SelectedIndex = i;
                foreach (ImagingObservationXML xmlImagingObservation in _xmlDoc.AnnotationDescriptionXML2.First.imagingObservationCollectionXML.First.ImagingObservationXML2)
                {
                    if (xmlImagingObservation.codeMeaning.Exists)
                    {
                        ComboItem comboItem = new ComboItem(xmlImagingObservation.codeMeaning.First.Value, xmlImagingObservation);
                        node.ComboBox.Items.Add(comboItem);
                    }
                }
                int nodeIdx = mainTree.Nodes.Add(node);
                _selectedImagingObservations.Add( new ObservationSelection(new ImagingObservationXML(null)));
                System.Diagnostics.Debug.Assert(_selectedImagingObservations.Count == nodeIdx + 1);

                // Set initial selection
                if (mainTree.SelectedNode == null)
                    mainTree.SelectedNode = mainTree.Nodes[nodeIdx];
            }
            else if (mainTree.Nodes.Count == 0)
            {
                this.AddNoDataNode(mainTree.Nodes);
                _selectedImagingObservations.Clear();
            }

            this.UpdateEnabledStates();
        }