{"body":"$ git diff | cat\ndiff --git a/src/core/hash_slice.pm b/src/core/hash_slice.pm\nindex 2c9a76a..cd08973 100644\n--- a/src/core/hash_slice.pm\n+++ b/src/core/hash_slice.pm\n@@ -206,15 +206,25 @@ multi sub postcircumfix:<{; }>(\\SELF, @indices) {\n     nqp::p6bindattrinvres(nqp::create(List), List, '$!reified', target)\n }\n \n-multi sub postcircumfix:<{; }>(\\SELF, @indices, :$exists!) {\n-    sub recurse-at-key(\\SELF, \\indices, \\counter){\n-        my $idx = indices[counter];\n-        (counter < indices.elems)\n-            ?? SELF.EXISTS-KEY($idx) && recurse-at-key(SELF{$idx}, indices, counter + 1)\n-            !! True\n-    }\n+multi postcircumfix:<{; }>(\\SELF, @indices, :$exists!) {\n+    multi recurse-at-key(\\SELF, \\indices, 0) {\n+\t\t(False xx indices.map(*.elems).reduce(&infix:<*>)).List\n+\t}\n+    multi recurse-at-key(\\SELF, [@idx, +@indices]) {\n+\t\t@idx.map( -> $idx { |recurse-at-key(SELF, ($idx, |@indices)) }).List\n+\t}\n+\tmulti recurse-at-key(\\SELF, [$idx, +@indices where *.elems > 0]) {\n+\t\tnqp::if(\n+\t\t\tnqp::not_i(SELF.EXISTS-KEY($idx)),\n+\t\t\trecurse-at-key(SELF{$idx}, @indices, 0),\n+\t\t\trecurse-at-key(SELF{$idx}, @indices),\n+\t\t)\n+\t}\n+\tmulti recurse-at-key(\\SELF, [$idx]) {\n+\t\tSELF.EXISTS-KEY($idx)\n+\t}\n \n-    recurse-at-key(SELF, @indices, 0)\n+\trecurse-at-key(SELF, @indices)\n }\n \n # vim: ft=perl6 expandtab sw=4","name":"","extension":"txt","url":"https://www.irccloud.com/pastebin/Ntrrr2GH","modified":1490757614,"id":"Ntrrr2GH","size":1314,"lines":39,"own_paste":false,"theme":"","date":1490757614}