public static bool IsTaskOrTaskOfT(ITypeSymbol typeSymbol) { if (typeSymbol == null) { return(false); } INamedTypeSymbol namedTypeSymbol = SymbolUtility.GetPossiblyAwaitableType(typeSymbol); if (namedTypeSymbol == null) { return(false); } return(namedTypeSymbol.HasMetadataName(MetadataNames.System_Threading_Tasks_Task) || namedTypeSymbol.OriginalDefinition.EqualsOrInheritsFrom(MetadataNames.System_Threading_Tasks_Task_T)); }