/// <summary>
        /// Deserialize config from JSON stored in the file specified by <code>filename</code>.
        /// </summary>
        /// <param name="filename"></param>
        public static BattlefieldConfig DeserializeFromFile(String filename)
        {
            using (StreamReader file = File.OpenText(filename)) {
                String s = file.ReadToEnd();

                BattlefieldConfig ret       = JsonConvert.DeserializeObject <BattlefieldConfig>(s);
                JObject           jObject   = JObject.Parse(s);
                JArray            moreArray = (JArray)jObject["MORE"];
                ret.MORE = ModUtils.DeserializeMoreObjects(moreArray);
                return(ret);
            }
        }
        public Turn Deserialize(string s)
        {
            row++;
            try {
                Turn    t         = JsonConvert.DeserializeObject <Turn>(s);
                JObject jObject   = JObject.Parse(s);
                JArray  moreArray = (JArray)jObject["MORE"];

                object[] deserializeMore = ModUtils.DeserializeMoreObjects(moreArray);
                for (int i = 0; i < deserializeMore.Length; i++)
                {
                    t.MORE[i] = (object[])deserializeMore[i];
                }
                return(t);
            } catch {
                Console.Error.WriteLine("At row {0} is wrong format.", row);
                return(null);
            }
        }