@Override
  public void visit(OWLEquivalentClassesAxiom owlEquivalentClassesAxiom) {
    // get the complex description out of the axiom
    List<OWLDescription> descriptions =
        new ArrayList<OWLDescription>(owlEquivalentClassesAxiom.getDescriptions());

    Set<OWLDescription> replacements = new HashSet<OWLDescription>();
    for (OWLDescription description : descriptions) {
      // visit the description and record replacment
      description.accept(descriptionVisitor);
      OWLDescription replacement = descriptionVisitor.getReplacements().get(description);
      if (replacement != null) replacements.add(replacement);
      else replacements.add(description);
    }

    // construct new Axiom
    OWLEquivalentClassesAxiom replacementAxiom =
        owlDataFactory.getOWLEquivalentClassesAxiom(replacements);

    // create the changeevents that have to be performed on the ontology
    try {
      List<OWLAxiomChange> replaceEvent =
          OWLUtils.createReplaceAxiomEvents(
              owlOntology, owlEquivalentClassesAxiom, replacementAxiom);
      axiomChanges.addAll(replaceEvent);

    } catch (OWLOntologyChangeException e) {
      e
          .printStackTrace(); // To change body of catch statement use File | Settings | File
                              // Templates.
    }

    // clear the description visitor
    descriptionVisitor.clear();

    super.visit(owlEquivalentClassesAxiom);
  }