public void visit(OWLEquivalentClassesAxiom axiom) {
   Set<OWLClassExpression> added = new HashSet<OWLClassExpression>();
   for (OWLClassExpression descA : axiom.getClassExpressions()) {
     descA.accept(this);
     for (OWLClassExpression descB : axiom.getClassExpressions()) {
       if (!descA.equals(descB) && !added.contains(descA) && !added.contains(descB)) {
         addChildParent(descA, descB, axiom);
         descA.accept(this);
         descB.accept(this);
         added.add(descA);
         added.add(descB);
       }
     }
   }
 }
 public Boolean visit(OWLEquivalentClassesAxiom axiom) {
   if (!axiom.containsNamedEquivalentClass()) {
     return false;
   }
   for (OWLClassExpression ce : axiom.getClassExpressions()) {
     if (!isOBOClassExpression(ce)) {
       return false;
     }
   }
   return true;
 }
 @Override
 public void visit(OWLEquivalentClassesAxiom axiom) {
   if (axiom.getClassExpressions().size() > 2) {
     Set<Set<OWLClassExpression>> rendered = new HashSet<Set<OWLClassExpression>>();
     for (OWLClassExpression left : axiom.getClassExpressions()) {
       for (OWLClassExpression right : axiom.getClassExpressions()) {
         if (left != right) {
           Set<OWLClassExpression> cur = CollectionFactory.createSet(left, right);
           if (!rendered.contains(cur)) {
             rendered.add(cur);
             left.accept(this);
             writeSpace();
             write(EQUIV);
             writeSpace();
             right.accept(this);
           }
         }
       }
     }
   } else if (axiom.getClassExpressions().size() == 2) {
     Iterator<OWLClassExpression> it = axiom.getClassExpressions().iterator();
     OWLClassExpression descA = it.next();
     OWLClassExpression descB = it.next();
     OWLClassExpression lhs;
     OWLClassExpression rhs;
     if (subject.equals(descA)) {
       lhs = descA;
       rhs = descB;
     } else {
       lhs = descB;
       rhs = descA;
     }
     lhs.accept(this);
     writeSpace();
     write(EQUIV);
     writeSpace();
     rhs.accept(this);
   }
 }
 @Override
 public void visit(OWLEquivalentClassesAxiom axiom) {
   Set<OWLClassExpression> descs = duplicateSet(axiom.getClassExpressions());
   obj = dataFactory.getOWLEquivalentClassesAxiom(descs, duplicateAxiomAnnotations(axiom));
 }
 public void visit(OWLEquivalentClassesAxiom axiom) {
   for (OWLClassExpression desc : axiom.getClassExpressions()) {
     desc.accept(this);
   }
   processAxiomAnnotations(axiom);
 }