static bool ExtractSignatures (string str, out string typeFullName, out string methodSignature)
{
var methodNameEnd = str.IndexOf ('(');
if (methodNameEnd == -1) {
typeFullName = methodSignature = null;
return false;
}
var typeNameEnd = str.LastIndexOf ('.', methodNameEnd);
if (typeNameEnd == -1) {
typeFullName = methodSignature = null;
return false;
}
// Adjustment for Type..ctor ()
if (typeNameEnd > 0 && str [typeNameEnd - 1] == '.') {
--typeNameEnd;
}
typeFullName = str.Substring (0, typeNameEnd);
// Remove generic parameters
typeFullName = Regex.Replace (typeFullName, @"\[[^\[\]]*\]$", "");
typeFullName = Regex.Replace (typeFullName, @"\<[^\[\]]*\>$", "");
methodSignature = str.Substring (typeNameEnd + 1);
return true;
}