private object EnsureSuffixArray(string filename, byte[] image) { var fsSvc = Services.RequireService <IFileSystemService>(); var diagSvc = Services.RequireService <IDiagnosticsService>(); Stream?stm = null; try { if (fsSvc.FileExists(filename)) { stm = fsSvc.CreateFileStream(filename, FileMode.Open, FileAccess.Read); try { var sSuffix = (int[])new UbjsonReader(stm).Read() !; return(SuffixArray.Load(image, sSuffix)); } catch (Exception ex) { diagSvc.Warn("Unable to load suffix array {0}. {1}", filename, ex.Message); } finally { stm.Close(); } } var sa = SuffixArray.Create(image); stm = fsSvc.CreateFileStream(filename, FileMode.Create, FileAccess.Write); new UbjsonWriter(stm).Write(sa.Save()); return(sa); } finally { if (stm != null) { stm.Dispose(); } } }