Yes it looks very strange. I faced a very complicated problem

When an exception is thrown, it should be possible to "retry" again. This should be configurable from the user. The problem is here that the methods are not all the same. I.e different parameter types (and amount of parameters) / different return types.