@Override
    public Object proceed() throws Throwable {
        try {
            return method.invoke(delegate, args);
        } catch (Throwable t) {
            if (t instanceof InvocationTargetException) {
                t = t.getCause();
            }
            throw t;
        }

    }
@Test
    void proceed() throws Throwable {
        //given
        MyMockMethodInvocation myMockMethodInvocation = new MyMockMethodInvocation();
        Method method = MyMockMethodInvocation.class.getDeclaredMethod("proceed", int.class);

        //when
        DefaultInvocationWrapper invocationWrapper = new DefaultInvocationWrapper(myMockMethodInvocation, myMockMethodInvocation, method, new Object[]{1});
        //then
        Assertions.assertEquals(1, invocationWrapper.proceed());

        //when
        DefaultInvocationWrapper invocationWrapperThrowException = new DefaultInvocationWrapper(myMockMethodInvocation, myMockMethodInvocation, method, new Object[]{0});
        //then should throw raw exception
        Assertions.assertThrows(ArithmeticException.class, () -> invocationWrapperThrowException.proceed());
    }