public void visit(OWLObjectOneOf desc) {
   try {
     faCTPlusPlus.initArgList();
     for (OWLIndividual ind : desc.getIndividuals()) {
       ind.accept(this);
       faCTPlusPlus.addArg(getLastIndividualPointer());
     }
     faCTPlusPlus.closeArgList();
     lastClassPointer = faCTPlusPlus.getOneOf();
   } catch (Exception e) {
     throw new FaCTPlusPlusRuntimeException(e);
   }
 }
 public void visit(OWLObjectUnionOf owlOr) {
   try {
     // We can't do "nested" arg lists, so translate all operands
     // and put the pointers into a set first, then create the intersection
     Set<ClassPointer> operandPointers = new HashSet<ClassPointer>();
     for (OWLDescription desc : owlOr.getOperands()) {
       desc.accept(this);
       operandPointers.add(getLastClassPointer());
     }
     faCTPlusPlus.initArgList();
     for (ClassPointer operandPointer : operandPointers) {
       faCTPlusPlus.addArg(operandPointer);
     }
     faCTPlusPlus.closeArgList();
     lastClassPointer = faCTPlusPlus.getConceptOr();
   } catch (Exception e) {
     throw new FaCTPlusPlusRuntimeException(e);
   }
 }
  public void visit(OWLDataOneOf node) {
    try {
      lastDataTypeExpressionPointer = owlDataRange2DataTypeExpressionPointerMap.get(node);
      if (lastDataTypeExpressionPointer == null) {

        List<DataValuePointer> pointers = new ArrayList<DataValuePointer>();
        for (OWLConstant con : node.getValues()) {
          con.accept(this);
          pointers.add(getLastDataValuePointer());
        }
        faCTPlusPlus.initArgList();
        for (DataValuePointer pointer : pointers) {
          faCTPlusPlus.addArg(pointer);
        }
        faCTPlusPlus.closeArgList();
        lastDataTypeExpressionPointer = faCTPlusPlus.getDataEnumeration();
        owlDataRange2DataTypeExpressionPointerMap.put(node, lastDataTypeExpressionPointer);
        dataTypeExpressionPointerMap.put(lastDataTypeExpressionPointer, node);
      }
    } catch (Exception e) {
      throw new FaCTPlusPlusRuntimeException(e);
    }
  }