public static bool IsTaskOrTaskOfT(ITypeSymbol typeSymbol) { return(typeSymbol != null && SymbolUtility.CanPossiblyBeAwaitable(typeSymbol) && (typeSymbol is INamedTypeSymbol namedTypeSymbol) && (namedTypeSymbol.HasMetadataName(MetadataNames.System_Threading_Tasks_Task) || namedTypeSymbol.OriginalDefinition.EqualsOrInheritsFrom(MetadataNames.System_Threading_Tasks_Task_T))); }