public VirtualFolder GetFolder(string path) { VirtualFolder result = this; Trace.Assert(path.StartsWith("/")); var parts = path.Split('/'); for (int i = 1; i < parts.Length; i++) { string folderName = parts[i]; if (folderName == "") { if (i == parts.Length - 1) { return(result); } else { Trace.Assert(false, "Empty path name in the middle of path: " + path); } } VirtualEntry entry = result.GetEntry(folderName); if (entry == null) { var new_folder = new VirtualFolder(folderName); new_folder.Parent = result; result.Entries.Add(new_folder); result = new_folder; } else if (entry.IsDirectory) { result = (VirtualFolder)entry; } else { Trace.Assert(false, "File name in the middle of the path: " + path); } } return(result); }