/// <summary>
/// INTERNAL API
///
/// If you override it, you must call it. But only ever once. See <see cref="Detach"/> for the only invocation
/// </summary>
/// <param name="actor">The actor who is unregistering</param>
internal virtual void Unregister(ActorCell actor)
{
if (DebugDispatcher) Actors.Value.Remove(this, (IInternalActorRef)actor.Self);
AddInhabitants(-1);
var mailbox = actor.SwapMailbox(Mailboxes.DeadLetterMailbox);
mailbox.BecomeClosed();
mailbox.CleanUp();
}