private Enums.AsyncDetected DetectCPUAsynchronousUsages(InvocationExpressionSyntax methodCall, IMethodSymbol methodCallSymbol)
        {
            var methodCallName = methodCall.Expression.ToString().ToLower();

            // DETECT CPU-BOUND ASYNC CALLS
            if (methodCallSymbol.IsThreadStart())
                return Enums.AsyncDetected.Thread;
            else if (methodCallSymbol.IsThreadPoolQueueUserWorkItem())
                return Enums.AsyncDetected.Threadpool;
            else if (methodCallSymbol.IsAsyncDelegate())
                return Enums.AsyncDetected.AsyncDelegate;
            else if (methodCallSymbol.IsBackgroundWorkerMethod())
                return Enums.AsyncDetected.BackgroundWorker;
            else if (methodCallSymbol.IsTaskCreationMethod())
                return Enums.AsyncDetected.Task;
            else if (methodCallSymbol.IsParallelForEach())
                return Enums.AsyncDetected.ParallelForEach;
            else if (methodCallSymbol.IsParallelFor())
                return Enums.AsyncDetected.ParallelFor;
            else if (methodCallSymbol.IsParallelInvoke())
                return Enums.AsyncDetected.ParallelInvoke;
            else
                return Enums.AsyncDetected.None;
        }
        private Enums.AsyncDetected DetectAsynchronousUsages(InvocationExpressionSyntax methodCall, IMethodSymbol methodCallSymbol)
        {
            var methodCallName = methodCall.Expression.ToString().ToLower();
            
            // DETECT ASYNC CALLS
            if (methodCallSymbol.IsThreadStart())
                return Enums.AsyncDetected.Thread;
            else if (methodCallSymbol.IsThreadPoolQueueUserWorkItem())
                return Enums.AsyncDetected.Threadpool;
            else if (methodCallSymbol.IsAsyncDelegate())
                return Enums.AsyncDetected.AsyncDelegate;
            else if (methodCallSymbol.IsBackgroundWorkerMethod())
                return Enums.AsyncDetected.BackgroundWorker;
            else if (methodCallSymbol.IsTaskCreationMethod())
                return Enums.AsyncDetected.Task;


            //// DETECT GUI UPDATE CALLS
            //else if (methodCallSymbol.IsISynchronizeInvokeMethod())
            //    return Enums.AsyncDetected.ISynchronizeInvoke;
            //else if (methodCallSymbol.IsControlBeginInvoke())
            //    return Enums.AsyncDetected.ControlInvoke;
            //else if (methodCallSymbol.IsDispatcherBeginInvoke())
            //    return Enums.AsyncDetected.Dispatcher;


            // DETECT PATTERNS
            else if (methodCallSymbol.IsAPMBeginMethod())
                return Enums.AsyncDetected.APM;
            else if (methodCall.IsEAPMethod())
                return Enums.AsyncDetected.EAP;
            else if (methodCallSymbol.IsTAPMethod())
                return Enums.AsyncDetected.TAP;

            else
                return Enums.AsyncDetected.None;
        }