public static string DescribeSpec(Expression<Func<bool>> spec)
{
if (spec.Body is ConstantExpression)
return "(" + ((ConstantExpression) spec.Body).Value + ")";
if (!(spec.Body is BinaryExpression))
return "(no more info)";
var binary = spec.Body as BinaryExpression;
string left = DescribeExpression(binary.Left);
string right = DescribeExpression(binary.Right);
return left + " " + ExtractOperator(binary) + " " + right;
}