public static Object invoke(Method m, Object obj, Object[] params)
        throws InvocationTargetException, IllegalAccessException {
        try {
            return bounce.invoke(null, new Object[] {m, obj, params});
        } catch (InvocationTargetException ie) {
            Throwable t = ie.getCause();

            if (t instanceof InvocationTargetException) {
                throw (InvocationTargetException)t;
            } else if (t instanceof IllegalAccessException) {
                throw (IllegalAccessException)t;
            } else if (t instanceof RuntimeException) {
                throw (RuntimeException)t;
            } else if (t instanceof Error) {
                throw (Error)t;
            } else {
                throw new Error("Unexpected invocation error", t);
            }
        } catch (IllegalAccessException iae) {
            // this can't happen
            throw new Error("Unexpected invocation error", iae);
        }
    }
public static Object invoke ( Method m , Object obj , Object [ ] params ) throws InvocationTargetException , IllegalAccessException { try { return bounce . invoke ( null , new Object [ ] { m , obj , params } ) ; } catch ( InvocationTargetException ie ) { Throwable t = ie . getCause ( ) ; if ( t instanceof InvocationTargetException ) { throw ( InvocationTargetException ) t ; } else if ( t instanceof IllegalAccessException ) { throw ( IllegalAccessException ) t ; } else if ( t instanceof RuntimeException ) { throw ( RuntimeException ) t ; } else if ( t instanceof Error ) { throw ( Error ) t ; } else { throw new Error ( "Unexpected invocation error" , t ) ; } } catch ( IllegalAccessException iae ) { throw new Error ( "Unexpected invocation error" , iae ) ; } }
/*
Bounce through the trampoline.