UnityEditor.ASCommitWindow.DoTransfer C# (CSharp) Method

DoTransfer() private method

private DoTransfer ( ParentViewFolder &foldersFrom, ParentViewFolder &foldersTo, int folder, int file, List &guidsOfFoldersToRemove, bool leftToRight ) : bool
foldersFrom ParentViewFolder
foldersTo ParentViewFolder
folder int
file int
guidsOfFoldersToRemove List
leftToRight bool
return bool
        private bool DoTransfer(ref ParentViewFolder[] foldersFrom, ref ParentViewFolder[] foldersTo, int folder, int file, ref List<string> guidsOfFoldersToRemove, bool leftToRight)
        {
            ParentViewFolder item = foldersFrom[folder];
            ParentViewFolder folder3 = null;
            string name = item.name;
            bool flag = false;
            bool flag2 = false;
            if (file == -1)
            {
                this.AddFolderToRemove(ref guidsOfFoldersToRemove, foldersFrom[folder].guid);
                int index = ParentViewState.IndexOf(foldersTo, name);
                if (index != -1)
                {
                    folder3 = foldersTo[index];
                    ArrayUtility.AddRange<ParentViewFile>(ref folder3.files, item.files);
                }
                else
                {
                    ArrayUtility.Add<ParentViewFolder>(ref foldersTo, item);
                    flag2 = true;
                    if (!HasFlag(item.changeFlags, ChangeFlags.Deleted))
                    {
                        flag = this.TransferDependentParentFolders(ref guidsOfFoldersToRemove, item.guid, leftToRight);
                    }
                    else
                    {
                        flag = this.TransferDeletedDependentParentFolders(ref guidsOfFoldersToRemove, item.guid, leftToRight);
                    }
                }
            }
            else
            {
                int num2 = ParentViewState.IndexOf(foldersTo, name);
                if (num2 == -1)
                {
                    if (HasFlag(item.files[file].changeFlags, ChangeFlags.Deleted) && HasFlag(item.changeFlags, ChangeFlags.Deleted))
                    {
                        ArrayUtility.Add<ParentViewFolder>(ref foldersTo, item);
                        this.AddFolderToRemove(ref guidsOfFoldersToRemove, item.guid);
                        num2 = foldersTo.Length - 1;
                        if (!AllFolderWouldBeMovedAnyway(!leftToRight ? this.pv2state : this.pv1state, item.guid))
                        {
                            flag = true;
                        }
                        flag |= this.TransferDeletedDependentParentFolders(ref guidsOfFoldersToRemove, item.guid, leftToRight);
                    }
                    else
                    {
                        ArrayUtility.Add<ParentViewFolder>(ref foldersTo, item.CloneWithoutFiles());
                        num2 = foldersTo.Length - 1;
                        flag = this.TransferDependentParentFolders(ref guidsOfFoldersToRemove, item.guid, leftToRight);
                    }
                    flag2 = true;
                }
                folder3 = foldersTo[num2];
                ArrayUtility.Add<ParentViewFile>(ref folder3.files, item.files[file]);
                ArrayUtility.RemoveAt<ParentViewFile>(ref item.files, file);
                if (item.files.Length == 0)
                {
                    this.AddFolderToRemove(ref guidsOfFoldersToRemove, foldersFrom[folder].guid);
                }
            }
            if (folder3 != null)
            {
                if (<>f__mg$cache0 == null)
                {
                    <>f__mg$cache0 = new Comparison<ParentViewFile>(ParentViewState.CompareViewFile);