With the old version: this block of code is invoked only when the readyset is empty and waitingset is not empty.
With the new gc implementation, this should be invoked in all case. The implementation is divided into 2 phases:

    if readyset = empty and waitingset != empty ---> restore waiting branches to ready
    if there is only one branch left (in this case, the waitingset must be empty and there is one in readyset, thanks to the previous statement), terminate the collector entity itself.