protected boolean valuesEqual(@NotNull Object queriedValue, @Nullable V valueInMap) {
        return queriedValue.equals(valueInMap);
    }
protected boolean valuesEqual ( @ NotNull Object queriedValue , @ Nullable V valueInMap ) { return queriedValue . equals ( valueInMap ) ; }
Returns {@code true} if the two given value objects should be considered equal for this map.
This equivalence is used in the implementations of {@link #containsValue(Object)}, {@link
#containsEntry(Object, Object)}, {@link #remove(Object, Object)}, {@link #replace(Object,
Object, Object)} methods, and the methods of the {@linkplain #values() values} collection.

<p>This method should obey general equivalence relation rules (see {@link
Object#equals(Object)} documentation for details).

<p>It is guaranteed that the first specified value is non-null and the arguments are not
identical (!=).

<p>This method accepts raw {@code Object} argument, because {@link Map} interface allows
to check presence of raw value, e. g. {@link #containsValue(Object)} without {@link
ClassCastException}. If you want to subclass parameterized {@code SmoothieMap}, you should
cast the arguments to the value parameter class yourself, e. g.: <pre><code>
class IpToDomainMap extends SmoothieMap&lt;Integer, String&gt; {

&#064;Override
protected boolean valuesEqual(&#064;NotNull Object d1, &#064;Nullable String d2) {
return ((String) d1).equalsIgnoreCase(d2);
}
}</code></pre>

<p>Default implementation is {@code queriedValue.equals(valueInMap)}.

@param queriedValue the first value to compare, that is passed to queries like {@link
#containsValue(Object)}
@param valueInMap the second value to compare, this value is already stored in the map
@return {@code true} if the given values should be considered equal for this map