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); }