/// <summary>
        /// Builds the various control flow constructs.
        /// </summary>
        /// <returns></returns>
        private BlockLogicalConstruct BuildLogicalConstructTree()
        {
            cfgBlockSplitter.SplitConditionalCFGBlocks();
            guardedBlocksBuilder.FindExceptionHandlingConstructs();
            yieldGuardedBlocksBuilder.BuildGuardedBlocks(theBlockLogicalConstruct);
            conditionBuilder.BuildConstructs(theBlockLogicalConstruct);
            loopBuilder.BuildLoops(theBlockLogicalConstruct);

            switchBuilder.BuildConstructs();
            ifBuilder.BuildConstructs(theBlockLogicalConstruct);

            followNodeDeterminator.ProcessConstruct(theBlockLogicalConstruct);

            return(theBlockLogicalConstruct);
        }