@Override
        @Nullable
        public Type getType() {
            Object resulT = this.result;
            if (resulT == null) {
                // Lazy invocation of the target method on the provided type
                resulT = ReflectionUtils.invokeMethod(this.method, this.provider.getType());
                // Cache the result for further calls to getType()
                this.result = resulT;
            }
            return (resulT instanceof Type[] ? ((Type[]) resulT)[this.index] : (Type) resulT);
        }
{link TypeProvider} for {link Type Types} obtained by invoking a no-arg method.
analyzer/src/main/java/nl/basjes/parse/useragent/utils/springframework/core/SerializableTypeWrapper.java