public virtual bool VisitLambdaExpression(LambdaExpression lambdaExpression, object d)
 {
     if ((lambdaExpression == null)) {
         return SetFailure();
     }
     if ((d == null)) {
         return SetFailure();
     }
     if ((lambdaExpression.Parameters == null)) {
         return SetFailure();
     }
     if ((lambdaExpression.StatementBody == null)) {
         return SetFailure();
     }
     if ((lambdaExpression.ExpressionBody == null)) {
         return SetFailure();
     }
     if(lambdaExpression.GetType() != d.GetType()) {return SetFailure();}
     var data = (LambdaExpression)d;
     if (!IsMatch(lambdaExpression, data)) {
         return SetFailure();
     }
     if (lambdaExpression.Parameters.Count == data.Parameters.Count) {
     for (int i=0; i<lambdaExpression.Parameters.Count;i++) {
         ParameterDeclarationExpression o = lambdaExpression.Parameters[i];
         if(o == null){return SetFailure();}
         if((bool)o.AcceptVisitor(this, data.Parameters[i]) == false) return SetFailure();
     }			}			else { return SetFailure(); }
     lambdaExpression.StatementBody.AcceptVisitor(this, data.StatementBody);
     return lambdaExpression.ExpressionBody.AcceptVisitor(this, data.ExpressionBody);
 }