public string GetPreviousMemberReferenceExpression(int tokenIndex)
{
string result = GetPreviousToken(ref tokenIndex, false);
result = GetPreviousToken(ref tokenIndex, false);
if (result != ".") {
result = null;
} else {
var names = new List<string>();
while (result == ".") {
result = GetPreviousToken(ref tokenIndex, false);
if (result == "this") {
names.Add("handle");
} else if (result != null) {
string trimmedName = result.Trim();
if (trimmedName.Length == 0) {
break;
}
names.Insert(0, trimmedName);
}
result = GetPreviousToken(ref tokenIndex, false);
}
result = String.Join("", names.ToArray());
foreach (char ch in result) {
if (!char.IsLetterOrDigit(ch) && ch != '_') {
result = "";
break;
}
}
}
return result;
}