com_baeldung_junitparams_SafeAdditionUtilUnitTest_java
junitparams.internal.parameters.ParamsFromMethodCommon
private Object[] invokeParamsProvidingMethod(Method provideMethod, Class<?> sourceClass) {
        try {
            Object testObject = sourceClass.newInstance();
            provideMethod.setAccessible(true);
            Object result = provideMethod.invoke(testObject, new Object[0]);
            return new ParamsToArrayConverter(this.frameworkMethod).convert(result);
        }
        catch (ClassCastException e) {
            throw new RuntimeException("The return type of: " + provideMethod.getName() + " defined in class " + sourceClass + " should be one of the following:\nObject[][], Iterable<Object[]>, Iterable<Iterable<Object>>, Iterator<Object[]>.\nFix it!", e);
        }
        catch (Exception e) {
            throw new RuntimeException("Could not invoke method: " + provideMethod.getName() + " defined in class " + sourceClass + " so no params were used.", e);
        }
    }
 -> java.lang.Class.newInstance(): java.lang.Object -> java.lang.reflect.Method.setAccessible(boolean): void -> java.lang.reflect.Method.invoke(java.lang.Object,java.lang.Object[]): java.lang.Object -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.reflect.Method.getParameterTypes(): java.lang.Class[] -> java.util.Arrays.asList(java.lang.Object[]): java.util.List -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.Object.getClass(): java.lang.Class -> java.lang.Class.isAssignableFrom(java.lang.Class): boolean -> java.lang.reflect.Method.getParameterTypes(): java.lang.Class[]
 [CALL] -> java.lang.Class.newInstance(): java.lang.Object [CALL] [EXIT] -> java.lang.reflect.Method.setAccessible(boolean): void -> java.lang.reflect.Method.invoke(java.lang.Object,java.lang.Object[]): java.lang.Object [CALL] -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer -> java.lang.Integer.valueOf(int): java.lang.Integer [EXIT] [CALL] [EXIT] [CALL] -> java.lang.reflect.Method.getParameterTypes(): java.lang.Class[] [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] -> java.util.Arrays.asList(java.lang.Object[]): java.util.List -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] -> java.lang.Object.getClass(): java.lang.Class -> java.lang.Class.isAssignableFrom(java.lang.Class): boolean [EXIT] [CALL] [CALL] -> java.lang.reflect.Method.getParameterTypes(): java.lang.Class[] [EXIT] [EXIT] [EXIT] [EXIT]