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; }