@Override
 protected void generateGetInsns(MethodVisitor mv) {
   Label defaultImplLabel = new Label();
   mv.visitVarInsn(Opcodes.ALOAD, 1);
   mv.visitTypeInsn(Opcodes.INSTANCEOF, HIBERNATE_PROXY_INTERNAL_NAME);
   mv.visitJumpInsn(Opcodes.IFEQ, defaultImplLabel);
   mv.visitVarInsn(Opcodes.ALOAD, 1);
   mv.visitTypeInsn(Opcodes.CHECKCAST, HIBERNATE_PROXY_INTERNAL_NAME);
   mv.visitMethodInsn(
       Opcodes.INVOKESTATIC,
       ASM.getInternalName(FrozenLazyInitializerImpl.class),
       "getFrozenLazyInitializer",
       '('
           + ASM.getDescriptor(HibernateProxy.class)
           + ')'
           + ASM.getDescriptor(FrozenLazyInitializer.class),
       false);
   mv.visitInsn(Opcodes.POP);
   mv.visitLabel(defaultImplLabel);
   super.generateGetInsns(mv);
 }