    @Test
    public void ensureArgsForMethodAccurate() throws NoSuchMethodException {

        // Given a method with only one param, pick out that param without the others
        List<String> inputStr = Arrays.asList("1", "nextMethod", "param", "param2");
        Method testClass1234 = ReflTestClass.ReflSubClass.class.getMethod("get1234", int.class);
        List<String> out = ReflectionUtil.getArgsForMethod(inputStr, testClass1234);

        assertEquals(1, out.size());
        assertEquals("1", out.get(0));

        // Given a method that requires multiple params, but not provided enough, ensure all are passed through
        inputStr = Arrays.asList("1", "2", "3");
        Method lotsOfParams = ReflTestClass.class.getMethod("methodWithLotsOfParams", int.class, int.class, int.class, int.class, int.class, int.class, int.class);
        out = ReflectionUtil.getArgsForMethod(inputStr, lotsOfParams);

        assertEquals(inputStr.size(), out.size());
        for (int i = 0; i < inputStr.size(); i++) {
            assertEquals(inputStr.get(i), out.get(i));
        }

        // if no params are required, and no input is given, ensure we always get an empty list
        inputStr = new ArrayList<>();
        Method noParams = ReflTestClass.class.getMethod("getSomeNumbers");
        out = ReflectionUtil.getArgsForMethod(inputStr, noParams);

        assertEquals(0, out.size());
    }