The Go 1.18 generics implementation uses a partial monomorphization technique called "GCShape stenciling with Dictionaries." This approach reduces the amount of unique function shapes by monomorphizing at a broader level than the type of the arguments, specifically based on the GCShape of the arguments, not their type. However, this approach does not allow for de-virtualization or inlining, as the associated method information lives in a runtime dictionary. The implementation introduces an interface call with two layers of indirection, which can lead to performance overhead, especially when dealing with interfaces. In some cases, such as parametrizing functional helpers by their callback types, the Go compiler can flatten the code using monomorphization. Nevertheless, the current implementation has limitations and imposes a performance tax in terms of compilation times. The choice of using runtime dictionaries may be re-evaluated to introduce more aggressive monomorphization in future Go releases.