code: private void visitFrameAfterOnMethodEntry() {
          if (!visitFramesAfterCallbacks)
              return;
  
          // The frame that is required after the trace guard must be
          // fully specified as 'this' is no longer an 'uninitialized this'
          if (isConstructor()) {
              List<Object> stackLocals = new ArrayList<Object>(argTypes.length + 1);
              stackLocals.add(classAdapter.getClassType().getInternalName());
              for (Type type : argTypes) {
                  switch (type.getSort()) {
                      case Type.ARRAY:
                      case Type.OBJECT:
                          stackLocals.add(type.getInternalName());
                          break;
                      case Type.BOOLEAN:
                      case Type.CHAR:
                      case Type.BYTE:
                      case Type.SHORT:
                      case Type.INT:
                          stackLocals.add(INTEGER);
                          break;
                      case Type.LONG:
                          stackLocals.add(LONG);
                          break;
                      case Type.FLOAT:
                          stackLocals.add(FLOAT);
                          break;
                      case Type.DOUBLE:
                          stackLocals.add(DOUBLE);
                          break;
                  }
              }
              visitFrame(F_FULL, stackLocals.size(), stackLocals.toArray(), 0, new Object[] {});
              visitInsn(NOP);
          } else {
              visitFrame(F_SAME, 0, null, 0, null);
              visitInsn(NOP);
          }
      }
docs: Inject a simple stack map frame and a PUSH NULL, POP. This method
  assumes that the onMethodEntry modified code and returned immediately
  after visiting the target label of a trace guard.