public SymbolProvider build() {
            return new ReservedWordSymbolProvider(
                    SmithyBuilder.requiredState("delegate", delegate),
                    buildEscaper());
        }
Builds a {@code SymbolProvider} implementation that wraps another
symbol provider and escapes its results.

<p>This might not always be the right solution. For example,
symbol providers often need to recursively resolve symbols to
create shapes like arrays and maps. In these cases, delegating
would be awkward or impossible since the symbol provider being
wrapped would also need access to the wrapper. In cases like this,
use {@link #buildEscaper()} and pass that into the SymbolProvider
directly.

@return Returns the built SymbolProvider that delegates to another.
smithy-codegen-core/src/main/java/software/amazon/smithy/codegen/core/ReservedWordSymbolProvider.java