public bool switchTo(string currentFolder) { if (currentFolder == null || currentFolder.Length == 0) { return(false); } if (currentInfoIndex < 0) { ++currentInfoIndex; FolderInfo fi = new FolderInfo(); info.Add(fi); fi.fromCurrentFolder(currentFolder); return(true); } else { FolderInfo lastInfo = info[currentInfoIndex]; if (lastInfo.isEqual(currentFolder)) { return(false); } int splitPathIndexInsideLastInfo = lastInfo.getSplitPathIndexFor(currentFolder); ++currentInfoIndex; FolderInfo fi = new FolderInfo(); info.Add(fi); if (splitPathIndexInsideLastInfo == -1) { fi.fromCurrentFolder(currentFolder); } else { fi = lastInfo; fi.splitPathIndex = splitPathIndexInsideLastInfo; fi.currentFolder = currentFolder; } return(true); } }