internal static SyntaxNode GetObjectCreationNewExpression (SyntaxTree tree, int position, CancellationToken cancellationToken) { if (tree != null) { if (!tree.IsInNonUserCode (position, cancellationToken)) { var tokenOnLeftOfPosition = tree.FindTokenOnLeftOfPosition (position, cancellationToken); var newToken = tokenOnLeftOfPosition.GetPreviousTokenIfTouchingWord (position); // Only after 'new'. if (newToken.Kind () == SyntaxKind.NewKeyword) { // Only if the 'new' belongs to an object creation expression (and isn't a 'new' // modifier on a member). if (tree.IsObjectCreationTypeContext (position, tokenOnLeftOfPosition, cancellationToken)) { return newToken.Parent as ExpressionSyntax; } } } } return null; }