code: @Override
      public void visitInsn(int opcode) {
          if (opcode == ATHROW && !enabledListeners.isEmpty()) {
              String key = createKey();
              ProbeImpl probe = getProbe(key);
              long probeId = probe.getIdentifier();
  
              setProbeInProgress(true);
              visitInsn(DUP); // throwable throwable
              visitLdcInsn(Long.valueOf(probeId)); // throwable throwable long1 long2
              visitInsn(DUP2_X1); // throwable long1 long2 throwable long1 long2
              visitInsn(POP2); // throwable long1 long2 throwable
              if (isStatic()) {
                  visitInsn(ACONST_NULL); // throwable long1 long2 throwable this
              } else {
                  visitVarInsn(ALOAD, 0); // throwable long1 long2 throwable this
              }
              visitInsn(SWAP); // throwable long1 long2 this throwable
              visitInsn(ACONST_NULL); // throwable long1 long2 this throwable null
              visitInsn(SWAP); // throwable long1 long2 this null throwable
              visitFireProbeInvocation(); // throwable
              setProbeInProgress(false);
  
              setProbeListeners(probe, enabledListeners);
          }
  
          super.visitInsn(opcode);
      }
docs: Inject code to fire a probe before any throw instruction.