Why do you limit the Check() functionality to "IsDefined" here? That way you won't be able to do more dynamic checks.