Restore the default implementation of deconstruct

While ugly, the param catching proves useful for other purposes such as
debugging with `repr`.