public static string[] GetFunctionParameters(int position, ITextSnapshot capture) { int openFunctionLine = capture.GetLineNumberFromPosition(position - 1) + 1; var prevLine = capture.GetLineFromLineNumber(openFunctionLine).GetText(); int firstParenPosition = capture.GetLineFromLineNumber(openFunctionLine).Start + prevLine.IndexOf('(') + 1; int lastParenPosition = -1; if (prevLine.IndexOf(')') > 0) { lastParenPosition = capture.GetLineFromLineNumber(openFunctionLine).Start + prevLine.IndexOf(')', prevLine.IndexOf('(')); } else { do { openFunctionLine++; prevLine = capture.GetLineFromLineNumber(openFunctionLine).GetText(); } while (!prevLine.Contains(")")); lastParenPosition = capture.GetLineFromLineNumber(openFunctionLine).Start + prevLine.IndexOf(")"); } return(StubUtils .RemoveComments(capture .GetText() .Substring(firstParenPosition, (lastParenPosition - firstParenPosition))) .Split(',') .Select(param => param.Trim()) .ToArray()); }