private void DisplayValueFormatter(NuGenIValueFormatter valueFormatter, TreeNode parentNode)
		{
			bool isMissingModuleFormatter = (valueFormatter is NuGenMissingModuleFormatter);

			if (!isMissingModuleFormatter || !MissingModules.Contains(valueFormatter))
			{
				ListViewItem fieldItem = fieldList.Items.Add(valueFormatter.Name);
				fieldItem.ToolTipText = valueFormatter.GetFormattedString(NuGenSettings.Instance.DisplayHexaNumbers);
				fieldItem.SubItems.Add(fieldItem.ToolTipText);
				fieldItem.Group = GetFieldGroup(valueFormatter.FieldGroup);
				fieldItem.Tag = valueFormatter;

				if (valueFormatter.IsComplexType)
				{
					if (parentNode == null)
					{
						throw new InvalidOperationException();
					}

					TreeNode valueFormatterNode = parentNode.Nodes.Add(valueFormatter.Name);
					valueFormatterNode.Tag = valueFormatter;
					valueFormatter.FieldNode = valueFormatterNode;
				}

				if (isMissingModuleFormatter)
				{
					MissingModules.Add(valueFormatter);
				}
			}
		}
		private void AddValueFormatter(NuGenIValueFormatter valueFormatter)
		{
			GridEXRow addedRow = objectsGrid.AddItem(valueFormatter.Name, valueFormatter.GetFormattedString(NuGenSettings.Instance.DisplayHexaNumbers), id++);

            NuGenHelperFunctions.TaggedObjects.Add(id, valueFormatter);            
		}
		private void ValueDisplayer_ToStringEvaluated(NuGenValueDisplayer sender, NuGenMethodDefinition toStringMethodDef, NuGenIValueFormatter toStringValueFormatter)
		{
			InvokeDisplayValueFormatter(toStringValueFormatter, sender.ParentNode);
			InvokeStepEvaluationProgress();
			UpdateCancelEvaluation(sender);
		}
		private void DisplayValueFormatter(NuGenIValueFormatter valueFormatter)
		{
			DisplayValueFormatter(valueFormatter, null);
		}
		private void ValueDisplayer_PropertyEvaluated(NuGenValueDisplayer sender, NuGenProperty property, NuGenIValueFormatter propertyValueFormatter)
		{
			InvokeDisplayValueFormatter(propertyValueFormatter, sender.ParentNode);
			InvokeStepEvaluationProgress();
			UpdateCancelEvaluation(sender);
		}
		private void ValueDisplayer_StringValueEvaluated(NuGenValueDisplayer sender, NuGenIValueFormatter stringValueFormatter)
		{
			InvokeDisplayValueFormatter(stringValueFormatter, sender.ParentNode);
			UpdateCancelEvaluation(sender);
		}
		private void ValueDisplayer_FieldEvaluated(NuGenValueDisplayer sender, NuGenFieldDefinition fieldDefinition, NuGenIValueFormatter fieldValueFormatter)
		{
			InvokeDisplayValueFormatter(fieldValueFormatter, sender.ParentNode);
			InvokeStepEvaluationProgress();
			UpdateCancelEvaluation(sender);
		}
		private void ValueDisplayer_EvaluatedNull(NuGenValueDisplayer sender, NuGenIValueFormatter nullValueFormatter)
		{
			InvokeDisplayValueFormatter(nullValueFormatter, sender.ParentNode);
			InvokeStepEvaluationProgress();
			UpdateCancelEvaluation(sender);
		}
		private void ValueDisplayer_ErrorOccurred(NuGenValueDisplayer sender, NuGenIValueFormatter errorFormatter)
		{
			InvokeDisplayValueFormatter(errorFormatter, sender.ParentNode);
			UpdateCancelEvaluation(sender);
		}
		private void ValueDisplayer_ArrayElementEvaluated(NuGenValueDisplayer sender, uint elementIndex, NuGenIValueFormatter elementValueFormatter)
		{
			InvokeDisplayValueFormatter(elementValueFormatter, sender.ParentNode);
			InvokeStepEvaluationProgress();
			UpdateCancelEvaluation(sender);
		}
		private void InvokeDisplayValueFormatter(NuGenIValueFormatter valueFormatter, TreeNode parentNode)
		{
			if (InvokeRequired)
			{
				Invoke(DisplayValueFormatterMethod, valueFormatter, parentNode);
			}
			else
			{
				DisplayValueFormatter(valueFormatter, parentNode);
			}
		}