public Object invokeMethod(String methodName) {
    return invokeMethod(methodName, (Class []) null, (Object []) null);
  }
@Test
    void testInvokeMethod_shouldAbleToInvokeMethodWithParamClassName()
        throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException,
        IllegalAccessException {
    Resource r = new Resource(null, new ResourceId("pool1", "name1"), "object");
    assertEquals("ect", r.invokeMethod("substring", new String[]{"int"}, new Object[]{3}));
    assertEquals(true, r.invokeMethod("startsWith", new String[]{"java.lang.String"}, new Object[]{"obj"}));

    assertEquals("ect", r.invokeMethod("substring", new ArrayList<>(Arrays.asList("int")), new ArrayList<>(Arrays.asList(3))));
    assertEquals(true, r.invokeMethod("startsWith", new ArrayList<>(Arrays.asList("java.lang.String")), new ArrayList<>(Arrays.asList("obj"))));
  }