internal static SourceRange GetSignatureHelpSpan <TArgumentList>(
            TArgumentList argumentList,
            SourceLocation start,
            Func <TArgumentList, SyntaxToken> getCloseToken)
            where TArgumentList : SyntaxNode
        {
            var closeToken = getCloseToken(argumentList);

            if (closeToken.RawKind != 0 && !closeToken.IsMissing)
            {
                return(SourceRange.FromBounds(start, closeToken.SourceRange.Start));
            }

            // Missing close paren, the span is up to the start of the next token.
            var lastToken = argumentList.GetLastToken();
            var nextToken = lastToken.GetNextToken();

            if (nextToken == null)
            {
                nextToken = argumentList.AncestorsAndSelf().Last().GetLastToken(includeZeroLength: true);
            }

            return(SourceRange.FromBounds(start, nextToken.SourceRange.Start));
        }