private TAnalysisData Flow(BasicBlock block, TAnalysisData data)
        {
            if (block.Kind == BasicBlockKind.Entry)
            {
                OperationVisitor.OnEntry(block, data);
            }
            else if (block.Kind == BasicBlockKind.Exit)
            {
                OperationVisitor.OnExit(block, data);
            }

            foreach (var statement in block.Statements)
            {
                data = OperationVisitor.Flow(statement, block, data);
            }

            return(data);
        }