public virtual Formula Visit(ReflectivePropertyFormula formula)
 {
     Visit((PropertyFormula)formula);
     return visitor.Visit(formula);
 }
 public Formula Visit(ReflectivePropertyFormula formula)
 {
     return formula;
 }
 public static void EvalPropertyInfoSetValue_object_object_objects(MethodCallExpression exp, ExpressionToFormulaState state)
 {
     exp.Object.ConvertTo(state.InlineValueState);
     var pi = (PropertyInfo)state.InlineValueState.Result;
     var setter = pi.GetSetMethod(true);
     var instance = default(Formula);
     if (!setter.IsStatic)
     {
         EvalExpression(exp.Arguments[0], state);
         instance = state.CurrentBlock.Formulas.Pop();
     }
     var left = new ReflectivePropertyFormula(instance, pi);
     EvalExpression(exp.Arguments[1], state);
     var right = state.CurrentBlock.Formulas.Pop();
     state.CurrentBlock.Formulas.Push(new AssignFormula() { Left = left, Right = right });
 }