private static bool IsLiteralOrCastFromLiteral(ExpressionSyntax expression)
{
if (expression == null)
throw new ArgumentNullException(nameof(expression));
if (expression is LiteralExpressionSyntax)
return true;
var castExpression = expression as CastExpressionSyntax;
if (castExpression != null)
return IsLiteralOrCastFromLiteral(castExpression.Expression);
return false;
}