frameWriter
ASM ClassWriter with COMPUTE_FRAMES that merges any two different reference types to Object — what kotlinc's own writer answers too (ClassBuilderFactories.BinaryClassWriter), so the recomputed frames are never less precise than the ones they replace. Sound only on kotlinc's invariant: a value is cast to its expected type before a merge, or before any use that needs more than Object (an interface is Object to the verifier). Both passes keep it — widening only ever erases a type toward Object, and the guard's branches join identical states — while javac output, which never casts an upcast, would not carry it.
Not ASM's default, which loads both names through this class's own loader: the module being woven is bytes no loader has seen, and for every other name the answer cannot matter. Shared by both bytecode passes below (instrumentClass and widenAccessClass).