Catrobat.IDE.Core.ViewModels.Editor.Sprites.SpriteEditorViewModel.CopyBlockBrickNotGrouped C# (CSharp) Method

CopyBlockBrickNotGrouped() private method

private CopyBlockBrickNotGrouped ( BlockBeginBrick scriptBrick, List list, List alreadyCopied ) : void
scriptBrick BlockBeginBrick
list List
alreadyCopied List
return void
        private void CopyBlockBrickNotGrouped(BlockBeginBrick scriptBrick, List<ModelBase> list, List<ModelBase> alreadyCopied)
        {
            BlockBeginBrick tmpBlockBeginBrick = scriptBrick.Clone();
            BlockEndBrick tmpBlockEndBrick = scriptBrick.End.Clone();
            tmpBlockBeginBrick.End = tmpBlockEndBrick;
            tmpBlockEndBrick.Begin = tmpBlockBeginBrick;
            list.Add(tmpBlockBeginBrick);
            alreadyCopied.Add(scriptBrick);

            for (int i = SelectedActions.IndexOf(scriptBrick) + 1; 
                i < SelectedActions.IndexOf(scriptBrick.End);)
            {
                if (SelectedActions[i] is ElseBrick && scriptBrick is IfBrick)
                {
                    ElseBrick copyElse = (scriptBrick as IfBrick).Else.Clone();
                    (tmpBlockBeginBrick as IfBrick).Else = copyElse;
                    (tmpBlockEndBrick as EndIfBrick).Else = copyElse;
                    copyElse.Begin = tmpBlockBeginBrick as IfBrick;
                    copyElse.End = tmpBlockEndBrick as EndIfBrick;
                    list.Add(copyElse);
                    alreadyCopied.Add((scriptBrick as IfBrick).Else);
                    i++;
                }
                else
                {
                    int tmpCount = list.Count;
                    CopyBrick(SelectedActions[i], list, alreadyCopied);
                    i += (list.Count - tmpCount);
                }
            }


            list.Add(tmpBlockEndBrick);
            alreadyCopied.Add(scriptBrick.End);
        }