public void Save() { if (!Modified) { return; } List <string> output = new List <string>(); FileComponent lastComponent = null; for (int i = 0; i < fileStructure.Count; i++) { string s = null; FileComponent d = fileStructure[i]; if (d.Fake) { s = null; } else { s = ""; if (lastComponent != null && !lastComponent.EndsLine) { s = output[output.Count - 1]; output.RemoveAt(output.Count - 1); } s += d.GetString(); if (d.EndsLine) { s += fileStructureComments[i]; } } if (s != null) { output.Add(s); } if (d is Data) { (d as Data).Modified = false; } lastComponent = d; } File.WriteAllLines(FullFilename, output); Modified = false; }