@Override
 public void visit(OWLDatatypeDefinitionAxiom axiom) {
   write("Datatype");
   axiom.getDatatype().accept(this);
   write(EQUIV);
   axiom.getDataRange().accept(this);
 }
 @Override
 public void visit(OWLDatatypeDefinitionAxiom axiom) {
   axiom.getDatatype().accept(this);
   OWLDatatype dt = (OWLDatatype) obj;
   axiom.getDataRange().accept(this);
   OWLDataRange rng = (OWLDataRange) obj;
   obj = dataFactory.getOWLDatatypeDefinitionAxiom(dt, rng, duplicateAxiomAnnotations(axiom));
 }
 @Override
 protected int compareObjectOfSameType(OWLObject object) {
   OWLDatatypeDefinitionAxiom other = (OWLDatatypeDefinitionAxiom) object;
   int diff = getDatatype().compareTo(other.getDatatype());
   if (diff != 0) {
     return diff;
   }
   return getDataRange().compareTo(other.getDataRange());
 }
 @Override
 public boolean equals(Object obj) {
   if (super.equals(obj)) {
     // superclass is responsible for null, identity, owlaxiom type and annotations
     if (!(obj instanceof OWLDatatypeDefinitionAxiom)) {
       return false;
     }
     OWLDatatypeDefinitionAxiom other = (OWLDatatypeDefinitionAxiom) obj;
     return datatype.equals(other.getDatatype()) && dataRange.equals(other.getDataRange());
   }
   return false;
 }
 public Set<OWLAxiom> write(OWLDatatype datatype) {
   Set<OWLAxiom> axioms = new HashSet<OWLAxiom>();
   axioms.addAll(writeEntityStart(DATATYPE, datatype));
   if (!isFiltered(AxiomType.DATATYPE_DEFINITION)) {
     for (OWLOntology ontology : getOntologies()) {
       Set<OWLDataRange> dataRanges = new TreeSet<OWLDataRange>();
       for (OWLDatatypeDefinitionAxiom ax : ontology.getDatatypeDefinitions(datatype)) {
         if (isDisplayed(ax)) {
           axioms.add(ax);
           dataRanges.add(ax.getDataRange());
         }
       }
       writeSection(EQUIVALENT_TO, dataRanges, ",", true, ontology);
     }
   }
   writeEntitySectionEnd(DATATYPE.toString());
   return axioms;
 }
 @Override
 public void visit(OWLDatatypeDefinitionAxiom axiom) {
   handleObject(axiom);
   axiom.getDatatype().accept(this);
   axiom.getDataRange().accept(this);
 }
 public void visit(OWLDatatypeDefinitionAxiom axiom) {
   type = AXIOM_TYPE_INDEX_BASE + axiom.getAxiomType().getIndex();
 }
 public void visit(OWLDatatypeDefinitionAxiom axiom) {
   axiom.getDatatype().accept(this);
   axiom.getDataRange().accept(this);
   processAxiomAnnotations(axiom);
 }