docs: private ArrayList handleDependentReferences(Identity oid, Object userObject,
              Object[] origFields, Object[] newFields, Object[] newRefs)
              throws LockingException
      {
          ClassDescriptor mif = _pb.getClassDescriptor(userObject.getClass());
          FieldDescriptor[] fieldDescs = mif.getFieldDescriptions();
          Collection refDescs = mif.getObjectReferenceDescriptors();
          int count = 1 + fieldDescs.length;
          ArrayList newObjects = new ArrayList();
          int countRefs = 0;
  
          for (Iterator it = refDescs.iterator(); it.hasNext(); count++, countRefs++)
          {
              ObjectReferenceDescriptor rds = (ObjectReferenceDescriptor) it.next();
              Identity origOid = (origFields == null ? null : (Identity) origFields[count]);
              Identity newOid = (Identity) newFields[count];
  
              if (rds.getOtmDependent())
              {
                  if ((origOid == null) && (newOid != null))
                  {
                      ContextEntry entry = (ContextEntry) _objects.get(newOid);
  
                      if (entry == null)
                      {
                          Object relObj = newRefs[countRefs];
                          insertInternal(newOid, relObj, LockType.WRITE_LOCK,
                                         true, oid, new Stack());
                          newObjects.add(newOid);
                      }
                  }
                  else if ((origOid != null) &&
                           ((newOid == null) || !newOid.equals(origOid)))
                  {
                      markDelete(origOid, oid, false);
                  }
              }
          }
  
          return newObjects;
      }