public void visit(OWLAnnotation annotation) {
   annotation.getProperty().accept(this);
   annotation.getValue().accept(this);
   for (OWLAnnotation anno : annotation.getAnnotations()) {
     anno.accept(this);
   }
 }
 private Set<OWLAnnotation> duplicateAxiomAnnotations(OWLAxiom axiom) {
   Set<OWLAnnotation> duplicatedAnnos = new HashSet<OWLAnnotation>();
   for (OWLAnnotation anno : axiom.getAnnotations()) {
     anno.accept(this);
     duplicatedAnnos.add((OWLAnnotation) obj);
   }
   return duplicatedAnnos;
 }
 // ////////////////////////////////////////////////////////////////////////////////////////////
 //
 // Axiom Visitor stuff
 //
 // ////////////////////////////////////////////////////////////////////////////////////////////
 protected void processAxiomAnnotations(OWLAxiom ax) {
   // default behavior: iterate over the annotations outside the axiom
   for (OWLAnnotation anno : ax.getAnnotations()) {
     anno.accept(this);
   }
 }