private static string ExtractTitle(ReflectionStatementDefinition reflectionStatementDefinition)
{
//Use attribute if present
var titleAttr = reflectionStatementDefinition
.MethodInfo.GetCustomAttributes(typeof(TitleAttribute),true)
.OfType<TitleAttribute>()
.Select(x => x.Title)
.FirstOrDefault(x => !string.IsNullOrEmpty(x));
if (titleAttr != null) return titleAttr;
var expression = reflectionStatementDefinition.MatchingCriteria.ToString();
if (Regex.IsMatch(expression, @"\(\?")) return reflectionStatementDefinition.MethodInfo.Name; //Compilcated regexes just use method name
return ParseTitle(expression, reflectionStatementDefinition.Parameters);
}