//------------------------------------------------------------------------------------------------

        private void ParseDiscreteEvidentialMapping(XmlNode node)
        {
            //Create the ReferenceList:
            XmlNode frame = node.SelectSingleNode("subframe");

            if (frame == null)
            {
                throw new InvalidBeliefModelException("The xml model element \"evidential-mapping\" should contain an element called \"subframe\" to define the frame of discernment!");
            }
            string frameName = frame.Attributes["name"].InnerText;
            StringReferenceList references = new StringReferenceList();

            try
            {
                foreach (XmlNode n in frame.ChildNodes)
                {
                    references.Add(n.InnerText);
                }
            }
            catch (IncompatibleReferenceListException)
            {
                throw new InvalidBeliefModelException("The xml model element file \"evidential-mapping\" has a state defined multiple times in the frame node!");
            }
            DiscreteEvidentialMapping mapping = new DiscreteEvidentialMapping(frameName, references);
            //Load evidential vectors:
            XmlNodeList vectors = node.SelectNodes("mapping-vector");

            if (vectors == null)
            {
                throw new InvalidBeliefModelException("An evidential mapping should contain mapping vectors!");
            }
            foreach (XmlNode n in vectors)
            {
                XmlNode fr = n.SelectSingleNode("from");
                DiscreteMappingVector mp = new DiscreteMappingVector(new DiscreteElement(references, fr.Attributes["element"].InnerText.Split(' ')));
                XmlNodeList           to = n.SelectNodes("to");
                foreach (XmlNode t in to)
                {
                    mp.AddPoint(new DiscreteMappingPoint(new DiscreteElement(_refList, t.Attributes["element"].InnerText.Split(' ')), Convert.ToDouble(t.InnerText)));
                }
                mapping.AddVector(mp);
            }
            _mappings.Add(mapping);
        }