ual é o conceito por trás de um CoroutineScop

Depois de ler a introdução e o javadoc de CoroutineScope Eu ainda estou um pouco confuso que a idéia por trás de umCoroutineScope é

A primeira frase do documento "Define um escopo para novas corotinas". não está claro para mim: por que minhas corotinas precisam de um escopo?

Além disso, por que os construtores independentes de corotina foram preteridos? Por que é melhor fazer isso:

fun CoroutineScope.produceSquares(): ReceiveChannel<Int> = produce {
    for (x in 1..5) send(x * x)
}

ao invés d

fun produceSquares(): ReceiveChannel<Int> = produce { //no longer an extension function
    for (x in 1..5) send(x * x)
}

questionAnswers(2)

yourAnswerToTheQuestion