Levente you should realize that these methods have been defined and used more than a couple of years ago.
Most of the methods I suggested were added to squeak long before they started working on the project.
I do not understand what you want to say but this is not important. We were working on vw in 1996 -> 2008 for Moose. So probably some came for Squeak. What I want to say is that judging is always driven by a context.
I don't think that growing a Set is faster than growing an Array, then converting it to a Set, but let's see the numbers:
"Prepare an array with 10000 elements, each element is an array with one integer. 10% is duplicate." data := (1 to: 9000) collect: [ :each | { SmallInteger maxVal atRandom } ]. data := data, (data last: 1000). data := data shuffled.
(1 to: 10) collect: [ :run | [ (data gather: [ :each | each ]) asSet ] timeToRun ]. ===> #(14 15 14 15 14 14 15 14 15 14).
(1 to: 10) collect: [ :run | [ data flatCollectAsSet: [ :each | each ] ] timeToRun ]. ===> #(29 29 29 28 29 28 28 29 29 29)
This is something I can understand. So we will fix that. stef