private StatementSyntax WrapRootExpression(ExpressionSyntax expressionSyntax) { InvocationExpressionSyntax invocationExpression = expressionSyntax as InvocationExpressionSyntax; if (invocationExpression != null) { var lastExpression = expressionSyntax.FollowProperty(exp => exp.TypeSwitch( (InvocationExpressionSyntax e) => e.Expression, (ParenthesizedExpressionSyntax e) => e.Expression, (CastExpressionSyntax e) => e.Expression, (MemberAccessExpressionSyntax e) => e.Expression )).LastOrDefault(); if (lastExpression != null && !(lastExpression is IdentifierNameSyntax || lastExpression is InstanceExpressionSyntax)) { return(SyntaxFactory.CallStatement(expressionSyntax)); } } return(SyntaxFactory.ExpressionStatement(expressionSyntax)); }