public virtual bool VisitCastExpression(CastExpression castExpression, object d) { if ((castExpression == null)) { return SetFailure(); } if ((d == null)) { return SetFailure(); } if ((castExpression.CastTo == null)) { return SetFailure(); } if ((castExpression.Expression == null)) { return SetFailure(); } if(castExpression.GetType() != d.GetType()) {return SetFailure();} var data = (CastExpression)d; if (!IsMatch(castExpression, data)) { return SetFailure(); } castExpression.CastTo.AcceptVisitor(this, data.CastTo); return castExpression.Expression.AcceptVisitor(this, data.Expression); }