private Method similarMethod(String name, Class<?>[] types) throws NoSuchMethodException {
        Class<?> type = type();

        for (Method method : type.getMethods()) {
            if (isSimilarSignature(method, name, types)) {
                return method;
            }
        }

        do {
            for (Method method : type.getDeclaredMethods()) {
                if (isSimilarSignature(method, name, types)) {
                    return method;
                }
            }

            type = type.getSuperclass();
        }
        while (type != null);

        throw new NoSuchMethodException("No similar method " + name + " with params " + Arrays.toString(types) + " could be found with type " + type() + ".");
    }
Call current {@link Reflector#obj} method

@param name method name
@param args method parameters
@return method return value is contained in {@link Reflector}
@throws ReflectException
caprice/kit-reflect/src/main/java/net/qiujuer/genius/kit/reflect/Reflector.java