public Expression ResolveTypeCheck (Expression checkedExpression, Type desiredType)
{
if (desiredType.IsAssignableFrom (checkedExpression.Type))
return Expression.Constant (true);
else if (desiredType == typeof (Chef) && checkedExpression.Type == typeof (Cook))
return Expression.MakeMemberAccess (checkedExpression, typeof (Cook).GetProperty ("IsStarredCook"));
else
throw new UnmappedItemException ("Cannot resolve type for checkedExpression: " + checkedExpression.Type.Name);
}