public virtual bool VisitFieldDeclaration(FieldDeclaration fieldDeclaration, object d)
 {
     if ((fieldDeclaration == null)) {
         return SetFailure();
     }
     if ((d == null)) {
         return SetFailure();
     }
     if ((fieldDeclaration.Attributes == null)) {
         return SetFailure();
     }
     if ((fieldDeclaration.TypeReference == null)) {
         return SetFailure();
     }
     if ((fieldDeclaration.Fields == null)) {
         return SetFailure();
     }
     if(fieldDeclaration.GetType() != d.GetType()) {return SetFailure();}
     var data = (FieldDeclaration)d;
     if (!IsMatch(fieldDeclaration, data)) {
         return SetFailure();
     }
     if (fieldDeclaration.Attributes.Count == data.Attributes.Count) {
     for (int i=0; i<fieldDeclaration.Attributes.Count;i++) {
         AttributeSection o = fieldDeclaration.Attributes[i];
         if(o == null){return SetFailure();}
         if((bool)o.AcceptVisitor(this, data.Attributes[i]) == false) return SetFailure();
     }			}			else { return SetFailure(); }
     fieldDeclaration.TypeReference.AcceptVisitor(this, data.TypeReference);
     if (fieldDeclaration.Fields.Count == data.Fields.Count) {
     for (int i=0; i<fieldDeclaration.Fields.Count;i++) {
         VariableDeclaration o = fieldDeclaration.Fields[i];
         if(o == null){return SetFailure();}
         if((bool)o.AcceptVisitor(this, data.Fields[i]) == false) return SetFailure();
     }			}			else { return SetFailure(); }
     return true;
 }