public void Parse(Document doc, System.Xml.XmlNode node)
        {
            foreach (System.Xml.XmlNode subnode in node.ChildNodes)
            {
                if (subnode.NodeType == System.Xml.XmlNodeType.Element)
                {
                    object st = doc.Parse(subnode);

                    if (st is IStatement)
                    {
                        if (subnode.Name == "Positive")
                        {
                            m_positive = (IStatement)st;
                        }
                        else if (subnode.Name == "Negative")
                        {
                            m_negative = (IStatement)st;
                        }
                        else
                        {
                            throw Document.ParseException("{0} should be either Positive or Negative", subnode.Name);
                        }
                    }
                    else if (st is ICondition)
                    {
                        m_condition = (ICondition)st;
                    }
                    else
                    {
                        throw Document.ParseException("{0} is not allowed in a conditional statement", subnode.Name);
                    }
                }
            }
        }
        protected void ParseInner( Document doc, System.Xml.XmlNode node, Type type )
        {
            foreach(System.Xml.XmlNode subnode in node.ChildNodes)
            {
                if(subnode is System.Xml.XmlElement)
                {
                    object o = doc.Parse( subnode );

                    if(type != null && type.IsInstanceOfType( o ) == false)
                    {
                        throw Document.ParseException( "{0} is not an instance of {1}", subnode.Name, type.FullName );
                    }

                    m_children.Add( o );
                }
            }
        }
        protected void ParseInner(Document doc, System.Xml.XmlNode node, Type type)
        {
            foreach (System.Xml.XmlNode subnode in node.ChildNodes)
            {
                if (subnode is System.Xml.XmlElement)
                {
                    object o = doc.Parse(subnode);

                    if (type != null && type.IsInstanceOfType(o) == false)
                    {
                        throw Document.ParseException("{0} is not an instance of {1}", subnode.Name, type.FullName);
                    }

                    m_children.Add(o);
                }
            }
        }
		public void Parse( Document doc, System.Xml.XmlNode node )
		{
			foreach(System.Xml.XmlNode subnode in node.ChildNodes)
			{
				if(subnode.NodeType == System.Xml.XmlNodeType.Element)
				{
					object st = doc.Parse( subnode );

                    if(st is IStatement)
                    {
                        if     (subnode.Name == "Positive" ) m_positive = (IStatement)st;
                        else if(subnode.Name == "Negative" ) m_negative = (IStatement)st;
                        else                                 throw Document.ParseException( "{0} should be either Positive or Negative", subnode.Name );
                    }
                    else if(st is ICondition)
                    {
                        m_condition = (ICondition)st;
                    }
                    else
                    {
                        throw Document.ParseException( "{0} is not allowed in a conditional statement", subnode.Name );
                    }
                }
			}
		}