code: private void doDelete(Object obj, boolean ignoreReferences) throws PersistenceBrokerException
      {
          //logger.info("DELETING " + obj);
          // object is not null
          if (obj != null)
          {
              obj = getProxyFactory().getRealObject(obj);
              /**
               * Kuali Foundation modification -- 8/24/2007
               */
              if ( obj == null ) return;
              /**
               * End of Kuali Foundation modification
               */
              /**
               * MBAIRD
               * 1. if we are marked for delete already, avoid recursing on this object
               *
               * arminw:
               * use object instead Identity object in markedForDelete List,
               * because using objects we get a better performance. I can't find
               * side-effects in doing so.
               */
              if (markedForDelete.contains(obj))
              {
                  return;
              }
              
              ClassDescriptor cld = getClassDescriptor(obj.getClass());
              //BRJ: check for valid pk
              if (!serviceBrokerHelper().assertValidPkForDelete(cld, obj))
              {
                  String msg = "Cannot delete object without valid PKs. " + obj;
                  logger.error(msg);
                  return;
              }
              
              /**
               * MBAIRD
               * 2. register object in markedForDelete map.
               */
              markedForDelete.add(obj);
              Identity oid = serviceIdentity().buildIdentity(cld, obj);
  
              // Invoke events on PersistenceBrokerAware instances and listeners
              BEFORE_DELETE_EVENT.setTarget(obj);
              fireBrokerEvent(BEFORE_DELETE_EVENT);
              BEFORE_DELETE_EVENT.setTarget(null);
  
              // now perform deletion
              performDeletion(cld, obj, oid, ignoreReferences);
   	  	 
              // Invoke events on PersistenceBrokerAware instances and listeners
              AFTER_DELETE_EVENT.setTarget(obj);
              fireBrokerEvent(AFTER_DELETE_EVENT);
              AFTER_DELETE_EVENT.setTarget(null);
   	  	 	
              // let the connection manager to execute batch
              connectionManager.executeBatchIfNecessary();
          }
      }
docs: do delete given object. Should be used by all intern classes to delete
  objects.