But the entire point of the feature is to help you keep your additions straight.
Why would you try to circumvent a feature which is there to help you avoid mistakes, unless there was a very good reason that meant that the class was actually not useful for you otherwise?
Given that Scala private often is actually JVM public, and given that JVM private is an setAccessible(true) away from being seen, and Scala immutable is JVM mutable most of the time, we’re absolutely beset by ways to intentionally do the thing that makes things tricky and dangerous.
The advantage of the permission token method is that you never see the token by default. It just looks like:
val b = Buffer.create[Int]
val c = b.build: // Or Buffer.build--can work however you want
b += 2
b += 3
So you really have to want to grab it. The scoping solution makes grabbing the functionally active class more tempting.
Just scoping is fine, too, most of the time. But a permission token adds an extra level of safety because as implicit context you don’t name it.