@Override
            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                String name = method.getName();
                try {
                    return with(obj).call(name, args).get();
                } catch (ReflectException e) {
                    if (isMap) {
                        Map<String, Object> map = (Map<String, Object>) obj;
                        int length = (args == null ? 0 : args.length);

                        if (length == 0 && name.startsWith("get")) {
                            return map.get(toLowerCaseFirstOne(name.substring(3)));
                        } else if (length == 0 && name.startsWith("is")) {
                            return map.get(toLowerCaseFirstOne(name.substring(2)));
                        } else if (length == 1 && name.startsWith("set")) {
                            map.put(toLowerCaseFirstOne(name.substring(3)), args[0]);
                            return null;
                        }
                    }

                    throw e;
                }
            }
Create a dynamic proxy
if invoke error try get value by Map when {@link Reflector#obj} instanceof Map

@param proxyType proxy type
@param <P>       proxy class
@return proxy class
caprice/kit-reflect/src/main/java/net/qiujuer/genius/kit/reflect/Reflector.java