Better yet, it was causing errors!
Calling .take flattens, whereas take($_) doesn't. So when taking a hash with a single key/value pair, only the pair was taken in the .take case. This broke the tests.
This brings Rakudo in line with STD on this matter, and fixes long-standing RT bug #66776.
The referent of $a is getting clobbered before uniq can get any values from it. Wrapping the list in gather/take gives us enough indirection that we can return a new $a without clobbering the old value.
This exposes information needed by NativeCall in $*VM.
Unbusts S14-traits/routine.t; the same bug hurt NativeCall.
Additionally, replace the say2 sub here with note, which fulfills the same purpose.
The .ast method is still around, though now it's deprecated.
As pointed out by TimToady++
As suggested on #perl6
Since we only use the exception for methods now
Now uses the suggested subroutine mechanism for getting the message across rather than actually creating multi subs for length() and bytes()