public void Merge(PathList pathList) { var directories = pathList.Where(x => x.IsDirectory).ToList(); LPath root = directories.First().Parent; foreach (var d in directories) { var temp = GetNonExistingPath(d.Parent.CatDir(LPath.GetRandomFileName())); d.Move(temp); foreach (var c in temp.GetChildren()) { var dest = GetNonExistingPath(root.CatDir(c.FileName)); c.Move(dest); } } }