public FolderNode(FolderNode node, FolderNode parent) : base(node, parent)
        {
            fileCount   = node.fileCount;
            subdirCount = node.subdirCount;

            List <FileNodeBase> oldVirtualChildren = node.virtualChildren;
            int count = oldVirtualChildren.Count;

            if (count > 0)
            {
                virtualChildren = new List <FileNodeBase>(oldVirtualChildren.Count);
                for (int i = 0; i < count; i++)
                {
                    FileNodeBase child    = oldVirtualChildren[i];
                    FileNodeBase newChild = null;
                    if (child is FolderNode folder)
                    {
                        newChild = new FolderNode(folder, this);
                    }
                    else if (child is FileNode file)
                    {
                        newChild = new FileNode(file, this);
                    }
                    if (newChild != null)
                    {
                        Add(newChild);
                    }
                }
            }
        }
 public FileNodeEventArgs(FileNodeAction action, FileNodeBase child, int index = -1)
 {
     Action   = action;
     Children = new List <FileNodeBase> {
         child
     };
     Index = index;
 }