public T Load <T>(string path, LoadMode mode = LoadMode.LoadOnly) where T : new()
        {
            T result = default(T);

            if (File.Exists(path))
            {
                IEnumerable <byte> input = File.ReadAllBytes(path);

                result = Deserialize <T>(input);
            }
            else
            {
                if (mode.In(LoadMode.CreateWhenNull, LoadMode.CreateAndSaveWhenNull))
                {
                    result = new T();

                    if (mode.In(LoadMode.CreateAndSaveWhenNull))
                    {
                        Save(result, path);
                    }
                }
            }

            return(result);
        }