/**
  * A utility function that duplicates a set of objects.
  *
  * @param objects The set of object to be duplicated
  * @return The set of duplicated objects
  */
 @SuppressWarnings("unchecked")
 private <O extends OWLObject> Set<O> duplicateSet(Set<O> objects) {
   Set<O> dup = new HashSet<O>();
   for (O o : objects) {
     o.accept(this);
     dup.add((O) obj);
   }
   return dup;
 }