public bool Load(string path, string name)
        {
            using (IO.XmlStream s = new BlamLib.IO.XmlStream(path, name, this))
            {
                s.ReadAttribute("game", ref engine);

                bool inherited;
                if (inherited = s.ReadAttributeOpt("inheritFrom", ref inheritFrom))
                {
                    path = System.IO.Path.GetDirectoryName(inheritFrom);
                    name = System.IO.Path.GetFileName(inheritFrom);

                    if (!LoadInherited(path, name))
                    {
                        return(false);
                    }
                }

                foreach (XmlNode n in s.Cursor.ChildNodes)
                {
                    if (!inherited && LoadProcessNode(s, n))
                    {
                        continue;
                    }
                    else if (n.Name == "functions")
                    {
                        s.SaveCursor(n);
                        ReadFunctions(s);                         // Load the definition's functions
                        s.RestoreCursor();
                    }
                    else if (n.Name == "globals")
                    {
                        s.SaveCursor(n);
                        ReadGlobals(s);                         // Load the definition's globals
                        s.RestoreCursor();
                    }
                }
            }

            return(true);
        }