You claimed the current __PACKAGE__ affects the result of Foo->SUPER::can( 'bar' )
Nothing of the kind. Why do you keep saying SUPER::can? That's really weird. That's "the can method that isn't in the current class". Unless you've implemented a local "can" method, that's gonna be UNIVERSAL::can.
Please go back and reread what I wrote. It's still true, and your example doesn't show anything to the contrary. I said that SUPER:: is affected by __PACKAGE__, and __PACKAGE__ is not affected by the package name of the subroutine, but only by package directives. Your "infinite" loop is for reasons other than what you state, because your hypothesis is incorrect.