visitInvokeDynamicInsn
Lambdas (LambdaMetafactory call sites the Kotlin compiler emits). Two things here name a type we erased and must move with it: the captured-argument descriptor, and the impl-method handle — which points at the snippet's OWN synthetic method, whose signature widenAccessClass's visitMethod already erased. instantiatedMethodType describes that handle, so it moves too (INSTANTIATED_TYPE).
samMethodType does NOT, and neither do altMetafactory's bridge types: they are the INTERFACE's contract. LMF builds the proxy's method descriptor from samMethodType, so an erased one declares a signature the interface never had — it links clean and throws AbstractMethodError at the first call, from inside whoever invoked the callback. Left alone, a SAM the snippet cannot implement is refused at the lambda itself, naming the type.
Only handles owned by the snippet are rewritten, for the same reason as everywhere else: we can erase our own declarations, not somebody else's.