public static void Start(StreamCreatorStage stage)
 {
     switch (stage)
     {
         case StreamCreatorStage.Global:
             Global.Start();
             break;
         case StreamCreatorStage.StreamAnalyzer:
             StreamAnalyzer.Start();
             break;
         case StreamCreatorStage.FindEntryPoint:
             FindEntryPoint.Start();
             break;
         case StreamCreatorStage.StreamAnalysisPerShader:
             StreamAnalysisPerShader.Start();
             break;
         case StreamCreatorStage.BubbleUpStreamUsages:
             BubbleUpStreamUsages.Start();
             break;
         case StreamCreatorStage.ComputeShaderStreamAnalysis:
             ComputeShaderStreamAnalysis.Start();
             break;
         case StreamCreatorStage.TagCleaner:
             TagCleaner.Start();
             break;
         case StreamCreatorStage.GenerateStreams:
             GenerateStreams.Start();
             break;
         case StreamCreatorStage.RemoveUselessAndSortMethods:
             RemoveUselessAndSortMethods.Start();
             break;
         case StreamCreatorStage.PropagateStreamsParameter:
             PropagateStreamsParameter.Start();
             break;
         case StreamCreatorStage.TransformStreamsAssignments:
             TransformStreamsAssignments.Start();
             break;
         case StreamCreatorStage.AssignSearch:
             AssignSearch.Start();
             break;
         case StreamCreatorStage.CreateOutputFromStream:
             CreateOutputFromStream.Start();
             break;
         case StreamCreatorStage.CreateStreamFromInput:
             CreateStreamFromInput.Start();
             break;
         case StreamCreatorStage.StreamFieldVisitor:
             StreamFieldVisitor.Start();
             ++StreamFieldVisitorCount;
             break;
         case StreamCreatorStage.StreamFieldVisitorClone:
             StreamFieldVisitorClone.Start();
             break;
     }
 }
        public static void Start(StreamCreatorStage stage)
        {
            switch (stage)
            {
            case StreamCreatorStage.Global:
                Global.Start();
                break;

            case StreamCreatorStage.StreamAnalyzer:
                StreamAnalyzer.Start();
                break;

            case StreamCreatorStage.FindEntryPoint:
                FindEntryPoint.Start();
                break;

            case StreamCreatorStage.StreamAnalysisPerShader:
                StreamAnalysisPerShader.Start();
                break;

            case StreamCreatorStage.BubbleUpStreamUsages:
                BubbleUpStreamUsages.Start();
                break;

            case StreamCreatorStage.ComputeShaderStreamAnalysis:
                ComputeShaderStreamAnalysis.Start();
                break;

            case StreamCreatorStage.TagCleaner:
                TagCleaner.Start();
                break;

            case StreamCreatorStage.GenerateStreams:
                GenerateStreams.Start();
                break;

            case StreamCreatorStage.RemoveUselessAndSortMethods:
                RemoveUselessAndSortMethods.Start();
                break;

            case StreamCreatorStage.PropagateStreamsParameter:
                PropagateStreamsParameter.Start();
                break;

            case StreamCreatorStage.TransformStreamsAssignments:
                TransformStreamsAssignments.Start();
                break;

            case StreamCreatorStage.AssignSearch:
                AssignSearch.Start();
                break;

            case StreamCreatorStage.CreateOutputFromStream:
                CreateOutputFromStream.Start();
                break;

            case StreamCreatorStage.CreateStreamFromInput:
                CreateStreamFromInput.Start();
                break;

            case StreamCreatorStage.StreamFieldVisitor:
                StreamFieldVisitor.Start();
                ++StreamFieldVisitorCount;
                break;

            case StreamCreatorStage.StreamFieldVisitorClone:
                StreamFieldVisitorClone.Start();
                break;
            }
        }