protected override Expression VisitPropertyAccess(PropertyAccessExpression expr)
 {
     Type = BinaryCriterionType.Property;
     return expr;
 }
 protected override Expression VisitMethodCall(MethodCallExpression expr)
 {
     Type = BinaryCriterionType.Criteria;
     return expr;
 }
 protected override Expression VisitConstant(ConstantExpression expr)
 {
     Type = BinaryCriterionType.Value;
     return expr;
 }
 protected override Expression VisitEntity(EntityExpression expr)
 {
     Type = BinaryCriterionType.Property;
     return expr;
 }
 protected override Expression VisitMethodCall(MethodCallExpression expr)
 {
     Type = BinaryCriterionType.Criteria;
     return(expr);
 }