protected override bool IsViableExtensionMethod(IMethodSymbol method, SyntaxNode expression, SemanticModel semanticModel, CancellationToken cancellationToken)
		{
			var leftExpression = expression.GetExpressionOfMemberAccessExpression() ?? expression.GetExpressionOfConditionalMemberAccessExpression();
			if (leftExpression == null)
			{
				if (expression.IsKind(SyntaxKind.CollectionInitializerExpression))
				{
					leftExpression = expression.GetAncestor<ObjectCreationExpressionSyntax>();
				}
				else
				{
					return false;
				}
			}

			var semanticInfo = semanticModel.GetTypeInfo(leftExpression, cancellationToken);
			var leftExpressionType = semanticInfo.Type;

			return leftExpressionType != null && method.ReduceExtensionMethod(leftExpressionType) != null;
		}