static SymbolProvider cache(SymbolProvider delegate) {
        return new CachingSymbolProvider(delegate);
    }
Decorates a {@code SymbolProvider} with a cache and returns the
decorated {@code SymbolProvider}.

<p>The results of calling {@code toSymbol} and {@code toMemberName}
on {@code delegate} are cached using a thread-safe cache.

<pre>
{@code
SymbolProvider delegate = createComplexProvider(myModel);
SymbolProvider cachingProvider = SymbolProvider.cache(delegate);
}
</pre>

@param delegate Symbol provider to wrap and cache its results.
@return Returns the wrapped SymbolProvider.
smithy-codegen-core/src/main/java/software/amazon/smithy/codegen/core/SymbolProvider.java