// Token: 0x06001A2E RID: 6702 RVA: 0x0006FEE8 File Offset: 0x0006E0E8
 private void AssertDirectory(SteamworksRemoteStorageFileSystem.Node node, UPath srcPath)
 {
     if (node is SteamworksRemoteStorageFileSystem.FileNode)
     {
         throw new IOException(string.Format("The source directory `{0}` is a file", srcPath));
     }
 }
        // Token: 0x06001A2A RID: 6698 RVA: 0x0006FD84 File Offset: 0x0006DF84
        private void AddNodeToTree(SteamworksRemoteStorageFileSystem.Node newNode)
        {
            UPath directory = newNode.path.GetDirectory();

            this.GetDirectoryNode(directory).AddChild(newNode);
            this.pathToNodeMap[newNode.path] = newNode;
        }
            // Token: 0x06001A48 RID: 6728 RVA: 0x00070184 File Offset: 0x0006E384
            public void RemoveChild(SteamworksRemoteStorageFileSystem.Node node)
            {
                int num = Array.IndexOf <SteamworksRemoteStorageFileSystem.Node>(this.childNodes, node);

                if (num >= 0)
                {
                    this.RemoveChildAt(num);
                }
            }
            // Token: 0x06001A46 RID: 6726 RVA: 0x000700B8 File Offset: 0x0006E2B8
            public void AddChild(SteamworksRemoteStorageFileSystem.Node node)
            {
                int childCount = this.childCount + 1;

                this.childCount = childCount;
                if (this.childCount > this.childNodes.Length)
                {
                    Array.Resize <SteamworksRemoteStorageFileSystem.Node>(ref this.childNodes, this.childCount);
                }
                this.childNodes[this.childCount - 1] = node;
                node.parent = this;
            }
        // Token: 0x06001A2F RID: 6703 RVA: 0x0006FF0A File Offset: 0x0006E10A
        protected override IEnumerable <UPath> EnumeratePathsImpl(UPath path, string searchPattern, SearchOption searchOption, SearchTarget searchTarget)
        {
            this.UpdateDirectories();
            SearchPattern search           = SearchPattern.Parse(ref path, ref searchPattern);
            List <UPath>  foldersToProcess = new List <UPath>
            {
                path
            };
            SortedSet <UPath> entries = new SortedSet <UPath>(UPath.DefaultComparerIgnoreCase);

            while (foldersToProcess.Count > 0)
            {
                UPath upath = foldersToProcess[0];
                foldersToProcess.RemoveAt(0);
                int num = 0;
                entries.Clear();
                SteamworksRemoteStorageFileSystem.EnterFileSystemShared();
                try
                {
                    SteamworksRemoteStorageFileSystem.Node directoryNode = this.GetDirectoryNode(upath);
                    if (upath == path)
                    {
                        this.AssertDirectory(directoryNode, upath);
                    }
                    else if (!(directoryNode is SteamworksRemoteStorageFileSystem.DirectoryNode))
                    {
                        continue;
                    }
                    SteamworksRemoteStorageFileSystem.DirectoryNode directoryNode2 = (SteamworksRemoteStorageFileSystem.DirectoryNode)directoryNode;
                    for (int i = 0; i < directoryNode2.childCount; i++)
                    {
                        SteamworksRemoteStorageFileSystem.Node child = directoryNode2.GetChild(i);
                        if (!(child is SteamworksRemoteStorageFileSystem.FileNode) || searchTarget != SearchTarget.Directory)
                        {
                            bool  flag  = search.Match(child.path);
                            bool  flag2 = searchOption == SearchOption.AllDirectories && child is SteamworksRemoteStorageFileSystem.DirectoryNode;
                            bool  flag3 = (child is SteamworksRemoteStorageFileSystem.FileNode && searchTarget != SearchTarget.Directory && flag) || (child is SteamworksRemoteStorageFileSystem.DirectoryNode && searchTarget != SearchTarget.File && flag);
                            UPath item  = upath / child.path;
                            if (flag2)
                            {
                                foldersToProcess.Insert(num++, item);
                            }
                            if (flag3)
                            {
                                entries.Add(item);
                            }
                        }
                    }
                }
                finally
                {
                    SteamworksRemoteStorageFileSystem.ExitFileSystemShared();
                }
                foreach (UPath upath2 in entries)
                {
                    yield return(upath2);
                }
                SortedSet <UPath> .Enumerator enumerator = default(SortedSet <UPath> .Enumerator);
            }
            yield break;
            yield break;
        }