private void OnFormatNode([NotNull] TVertex vertex, [NotNull] DirectedGraphNode node)
        {
            Debug.Assert(vertex != null);
            Debug.Assert(node != null);

            FormatNode?.Invoke(vertex, node);
        }
		internal static int GetFormatCrc(FormatStore formatStore, FormatNode formatNode)
		{
			int num = 0;
			TextRun textRun = formatStore.GetTextRun(formatNode.BeginTextPosition);
			if (!textRun.Equals(TextRun.Invalid))
			{
				while (!textRun.IsEnd() && textRun.Type != TextRunType.NonSpace)
				{
					textRun.MoveNext();
				}
				if (!textRun.IsEnd())
				{
					num = (int)textRun.GetWordChar(0);
				}
			}
			Dictionary<PropertyId, List<PropertyValue>> dictionary = new Dictionary<PropertyId, List<PropertyValue>>();
			do
			{
				if (formatNode.Properties != null)
				{
					foreach (Property property in formatNode.Properties)
					{
						if (!property.IsNull)
						{
							List<PropertyValue> list;
							if (!dictionary.TryGetValue(property.Id, out list))
							{
								list = new List<PropertyValue>();
								dictionary.Add(property.Id, list);
							}
							list.Add(property.Value);
						}
					}
				}
				formatNode = formatNode.Parent;
			}
			while (formatNode.Parent != FormatNode.Null);
			foreach (KeyValuePair<PropertyId, List<PropertyValue>> keyValuePair in dictionary)
			{
				int propertyCrc = BodyFragmentInfo.GetPropertyCrc(formatStore, keyValuePair.Key, keyValuePair.Value);
				if (propertyCrc != 0)
				{
					num ^= propertyCrc;
				}
			}
			return num;
		}
 private void InjectFragment(FormatNode fragmentNode)
 {
     this.formatOutput.OutputFragment(fragmentNode);
 }