private InstructionBlock MarkSecondSuccessorForRemovalIfItIsUnconditionalJump(InstructionBlock block)
 {
     V_0 = block.get_Successors()[1];
     if (this.IsUnconditionJumpBlock(V_0))
     {
         block.RemoveFromSuccessors(V_0);
         block.AddToSuccessors(V_0.get_Successors()[0]);
         this.blocksToBeRemoved.Add(V_0.get_First().get_Offset());
         V_0 = V_0.get_Successors()[0];
     }
     return(V_0);
 }
        private void ReconnectBlocks(int index)
        {
            InstructionBlock previousIf = this.instructionToBlockMapping[index];

            for (int i = 1; i < this.switchBlocksToCasesMap[index].Count; i++)
            {
                InstructionBlock currentIf = this.instructionToBlockMapping[this.switchBlocksToCasesMap[index][i]];
                previousIf.RemoveFromSuccessors(previousIf.Successors.Last());
                previousIf.AddToSuccessors(currentIf);

                previousIf = currentIf;
            }
        }
        private InstructionBlock MarkSecondSuccessorForRemovalIfItIsUnconditionalJump(InstructionBlock block)
        {
            InstructionBlock secondSuccessor = block.Successors[1];

            if (IsUnconditionJumpBlock(secondSuccessor))
            {
                block.RemoveFromSuccessors(secondSuccessor);
                block.AddToSuccessors(secondSuccessor.Successors[0]);
                this.blocksToBeRemoved.Add(secondSuccessor.First.Offset);

                secondSuccessor = secondSuccessor.Successors[0];
            }

            return(secondSuccessor);
        }