public function remove(IEntity $entity, $withCascade = true)
{
$queuePersist = $queueRemove = [];
RemovalHelper::getCascadeQueueAndSetNulls($entity, $this, $withCascade, $queuePersist, $queueRemove);
foreach ($queuePersist as $object) {
if ($object instanceof IEntity) {
$repository = $this->configuration[2][get_class($object)];
$this->loader->getRepository($repository)->doPersist($object);
} elseif ($object instanceof IRelationshipCollection) {
$object->doPersist();
}
}
foreach ($queueRemove as $object) {
$repository = $this->configuration[2][get_class($object)];
$this->loader->getRepository($repository)->doRemove($object);
}
return $entity;
}