@Nullable
  default <V> V getOrDefault(Object key, Class<V> requiredType, V defaultValue) {
    V value = get(key, requiredType);
    return (value == null ? defaultValue : value);
  }
Get the value of the specified required type that is stored under
the supplied {@code key}, or the supplied {@code defaultValue} if no
value is found for the supplied {@code key} in this store or in an
ancestor.
<p>
If no value is stored in the current {@link IStore}
for the supplied {@code key}, ancestors of the context will be queried
for a value with the same {@code key} in the {@code Namespace} used
to create this store.

@param key the key; never {@code null}
@param requiredType the required type of the value; never {@code null};
will throw {@link StoreException} if value isn't an instance of this type
@param defaultValue the default value
@param <V> the value type
@return the value; potentially {@code null}
@see #get(Object, Class)
@since 2.4
spock-core/src/main/java/org/spockframework/runtime/extension/IStore.java