If that is what it takes to make #collect: work the way you want, then I don't want it to work that way. In my opinion, you are making the implementation very complicated for only a slight improvement in behavior. I would rather just say "aString asArray collect: [:each | each codePoint]" when I want #collect: to return an array. -Ralph