code: private void visitFrameAfterMethodReturnCallback() {
          if (!visitFramesAfterCallbacks)
              return;
  
          Type returnType = getReturnTypeForTrace();
          if (!Type.VOID_TYPE.equals(getReturnTypeForTrace()) && !isConstructor()) {
              Object typeDescriptor = null;
              switch (returnType.getSort()) {
                  case Type.BOOLEAN:
                  case Type.BYTE:
                  case Type.CHAR:
                  case Type.INT:
                  case Type.SHORT:
                      typeDescriptor = INTEGER;
                      break;
                  case Type.DOUBLE:
                      typeDescriptor = DOUBLE;
                      break;
                  case Type.FLOAT:
                      typeDescriptor = FLOAT;
                      break;
                  case Type.LONG:
                      typeDescriptor = LONG;
                      break;
                  default:
                      typeDescriptor = returnType.getInternalName();
                      break;
              }
              visitFrame(F_SAME1, 0, null, 1, new Object[] { typeDescriptor });
          } else {
              visitFrame(F_SAME, 0, null, 0, null);
          }
      }
docs: Generate the stack frame that's needed after visiting the
  method exit trace guard target injected by tracing adapters.