public virtual bool VisitIfElseStatement(IfElseStatement ifElseStatement, object d)
 {
     if ((ifElseStatement == null)) {
         return SetFailure();
     }
     if ((d == null)) {
         return SetFailure();
     }
     if ((ifElseStatement.Condition == null)) {
         return SetFailure();
     }
     if ((ifElseStatement.TrueStatement == null)) {
         return SetFailure();
     }
     if ((ifElseStatement.FalseStatement == null)) {
         return SetFailure();
     }
     if ((ifElseStatement.ElseIfSections == null)) {
         return SetFailure();
     }
     if(ifElseStatement.GetType() != d.GetType()) {return SetFailure();}
     var data = (IfElseStatement)d;
     if (!IsMatch(ifElseStatement, data)) {
         return SetFailure();
     }
     ifElseStatement.Condition.AcceptVisitor(this, data.Condition);
     if (ifElseStatement.TrueStatement.Count == data.TrueStatement.Count) {
     for (int i=0; i<ifElseStatement.TrueStatement.Count;i++) {
         Statement o = ifElseStatement.TrueStatement[i];
         if(o == null){return SetFailure();}
         if((bool)o.AcceptVisitor(this, data.TrueStatement[i]) == false) return SetFailure();
     }			}			else { return SetFailure(); }
     if (ifElseStatement.FalseStatement.Count == data.FalseStatement.Count) {
     for (int i=0; i<ifElseStatement.FalseStatement.Count;i++) {
         Statement o = ifElseStatement.FalseStatement[i];
         if(o == null){return SetFailure();}
         if((bool)o.AcceptVisitor(this, data.FalseStatement[i]) == false) return SetFailure();
     }			}			else { return SetFailure(); }
     if (ifElseStatement.ElseIfSections.Count == data.ElseIfSections.Count) {
     for (int i=0; i<ifElseStatement.ElseIfSections.Count;i++) {
         ElseIfSection o = ifElseStatement.ElseIfSections[i];
         if(o == null){return SetFailure();}
         if((bool)o.AcceptVisitor(this, data.ElseIfSections[i]) == false) return SetFailure();
     }			}			else { return SetFailure(); }
     return true;
 }