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);
    }
  }