protected final Optional<Method> getInvokerMethod(String methodName,
            Function<? super String, ? extends Method> mappingFunction) {
        if (methodName == null) {
            return Optional.empty();
        }
        if (mappingFunction == null) {
            return Optional.ofNullable(cacheMethods.get(methodName));
        }
        return Optional.ofNullable(cacheMethods.computeIfAbsent(methodName, mappingFunction));
    }
@Test
    public void testCache() throws Exception {
        final ReflectMethodCacheSupport reflectMethodCacheSupport = new ReflectMethodCacheSupport();
        String methodName = "test";
        final Method toString = reflectMethodCacheSupport.getInvokerMethod(methodName, fn -> {
            try {
                return Object.class.getDeclaredMethod("toString");
            } catch (NoSuchMethodException ignored) {
                // ignored
            }
            return null;
        }).get();
        Assert.assertNotNull(toString.invoke(reflectMethodCacheSupport));
    }