public TransitionElement(Transition trans)
 {
     A = 2 * trans.To.Index;
     B = 2 * trans.Parent.Index + 1;
     if (trans.Parent.Index < trans.To.Index)
     {
         A = 2 * trans.Parent.Index + 1;
         B = 2 * trans.To.Index;
     }
     if (trans.Parent.Index > trans.To.Index)
     {
         A = 2 * trans.To.Index + 1;
         B = 2 * trans.Parent.Index;
     }
     Transition = trans;
 }
		private static void ProcessTransitions(Dialog dialog, XmlNode dialogNode)
		{
			State state;
			Transition transition;
			int transitionIndex = 0;

			XmlNode dialogChildNode, transitionNode;
			int i, j;
			for (i = 0; i < dialogNode.ChildNodes.Count; i++)
			{
				dialogChildNode = dialogNode.ChildNodes[i];
				if (dialogChildNode.NodeType != XmlNodeType.Comment)
				{
					if (dialogChildNode.Name == "state")
					{
						state = dialog.States[dialogChildNode.Attributes["key"].Value];
						transitionIndex = 0;
						for (j = 0; j < dialogChildNode.ChildNodes.Count; j++)
						{
							transitionNode = dialogChildNode.ChildNodes[j];
							if (transitionNode.NodeType != XmlNodeType.Comment)
							{
								transition = new Transition();
								transition.Parent = state;
								transition.Index = transitionIndex;
								transitionIndex++;
								if (transitionNode.Attributes["key"] == null || transitionNode.Attributes["key"].Value.Length == 0)
									throw new ConfigurationErrorsException(string.Format(CultureInfo.CurrentCulture, Resources.TransitionAttributeMissing, "key"));
								transition.Key = transitionNode.Attributes["key"].Value;
								if (transitionNode.Attributes["to"] == null || transitionNode.Attributes["to"].Value.Length == 0)
									throw new ConfigurationErrorsException(string.Format(CultureInfo.CurrentCulture, Resources.TransitionAttributeMissing, "to"));
								transition.To = dialog.States[transitionNode.Attributes["to"].Value];
								if (transition.To == null)
									throw new ConfigurationErrorsException(string.Format(CultureInfo.CurrentCulture, Resources.InvalidTransitionToKey, state.Key, transitionNode.Attributes["to"].Value));
								if (state.Transitions[transitionNode.Attributes["key"].Value] != null)
									throw new ConfigurationErrorsException(string.Format(CultureInfo.CurrentCulture, Resources.DuplicateTransitionKey, transitionNode.Attributes["key"].Value, state.Key));
								state.Transitions[transitionNode.Attributes["key"].Value] = transition;
							}
						}
					}
				}
			}
		}