Generating an exception can be pretty expensive.  Can we use a map reversing the one in canAcceptBoxed, instead?