private IEnumerable<Expression> FindNullableExpressions(Expression exp)
{
if (exp.ContainsAnnotation("nullableTarget"))
{
yield return ((MemberReferenceExpression) exp).Target;
}
else
{
BinaryExpression bex = exp as BinaryExpression;
if (null != bex)
{
foreach (Expression inner in FindNullableExpressions(bex.Left))
yield return inner;
foreach (Expression inner in FindNullableExpressions(bex.Right))
yield return inner;
}
}
}