protected void do_def(CSOperation operation) {
   // define key / value association
   Iterator it = operation.getOperands();
   COSObject operand = COSNull.NULL;
   if (it.hasNext()) {
     operand = (COSObject) it.next();
   }
   COSDictionary dict = operand.asDictionary();
   if (dict == null) {
     COSName key = operand.asName();
     if (key == null) {
       return;
     }
     COSObject value = COSNull.NULL;
     if (it.hasNext()) {
       value = (COSObject) it.next();
     }
     addDefinition(key, value);
   } else {
     Iterator<Map.Entry<COSName, COSObject>> eit = dict.entryIterator();
     while (eit.hasNext()) {
       Map.Entry<COSName, COSObject> entry = eit.next();
       COSName key = entry.getKey();
       COSObject value = entry.getValue();
       addDefinition(key, value);
     }
   }
 }