@Nullable
    private static List<Method> findConcreteMethodsOnInterfaces(Class<?> clazz) {
        List<Method> result = null;
        for (Class<?> ifc : clazz.getInterfaces()) {
            for (Method ifcMethod : ifc.getMethods()) {
                if (!Modifier.isAbstract(ifcMethod.getModifiers())) {
                    if (result == null) {
                        result = new ArrayList<>();
                    }
                    result.add(ifcMethod);
                }
            }
        }
        return result;
    }
Invoke the specified {link Method} against the supplied target object with the
supplied arguments. The target object can be {@code null} when invoking a
static {link Method}.
<p>Thrown exceptions are handled via a call to {link #handleReflectionException}.

@param method the method to invoke
@param target the target object to invoke the method on
@param args   the invocation arguments (may be {@code null})
@return the invocation result, if any
analyzer/src/main/java/nl/basjes/parse/useragent/utils/springframework/util/ReflectionUtils.java