@Override
    public boolean equals(@Nullable Object other) {
        if (this == other) {
            return true;
        }
        if (!(other instanceof ResolvableType)) {
            return false;
        }

        ResolvableType otherType = (ResolvableType) other;
        if (!ObjectUtils.nullSafeEquals(this.type, otherType.type)) {
            return false;
        }
        if (this.typeProvider != otherType.typeProvider &&
            (this.typeProvider == null || otherType.typeProvider == null ||
                !ObjectUtils.nullSafeEquals(this.typeProvider.getType(), otherType.typeProvider.getType()))) {
            return false;
        }
        if (this.variableResolver != otherType.variableResolver &&
            (this.variableResolver == null || otherType.variableResolver == null ||
                !ObjectUtils.nullSafeEquals(this.variableResolver.getSource(), otherType.variableResolver.getSource()))) {
            return false;
        }
        return ObjectUtils.nullSafeEquals(this.componentType, otherType.componentType);
    }
Resolve this type by a single level, returning the resolved value or {link #NONE}.
<p>Note: The returned {link ResolvableType} should only be used as an intermediary
as it cannot be serialized.
analyzer/src/main/java/nl/basjes/parse/useragent/utils/springframework/core/ResolvableType.java