public virtual bool VisitAttribute(ICSharpCode.NRefactory.Ast.Attribute attribute, object d)
 {
     if ((attribute == null)) {
         return SetFailure();
     }
     if ((d == null)) {
         return SetFailure();
     }
     if ((attribute.PositionalArguments == null)) {
         return SetFailure();
     }
     if ((attribute.NamedArguments == null)) {
         return SetFailure();
     }
     if(attribute.GetType() != d.GetType()) {return SetFailure();}
     var data = (ICSharpCode.NRefactory.Ast.Attribute)d;
     if (!IsMatch(attribute, data)) {
         return SetFailure();
     }
     if (attribute.PositionalArguments.Count == data.PositionalArguments.Count) {
     for (int i=0; i<attribute.PositionalArguments.Count;i++) {
         Expression o = attribute.PositionalArguments[i];
         if(o == null){return SetFailure();}
         if((bool)o.AcceptVisitor(this, data.PositionalArguments[i]) == false) return SetFailure();
     }			}			else { return SetFailure(); }
     if (attribute.NamedArguments.Count == data.NamedArguments.Count) {
     for (int i=0; i<attribute.NamedArguments.Count;i++) {
         NamedArgumentExpression o = attribute.NamedArguments[i];
         if(o == null){return SetFailure();}
         if((bool)o.AcceptVisitor(this, data.NamedArguments[i]) == false) return SetFailure();
     }			}			else { return SetFailure(); }
     return true;
 }