code: @Override
      public void visitCode() {
          if (injectedTraceAnnotationVisitor == null && classAdapter.isInjectedTraceAnnotationRequired()) {
              AnnotationVisitor av = visitAnnotation(INJECTED_TRACE_TYPE.getDescriptor(), true);
              av.visitEnd();
          }
  
          super.visitCode();
  
          // Label the entry to the method so we can update the local var
          // debug data and indicate that we're referencing them during
          // method entry
          methodEntryLabel = new Label();
          visitLabel(methodEntryLabel);
  
          if (!waitingForSuper) {
              // This must be done before all instruction callbacks, but it must
              // also be done before the visitLabel() callback, which might have
              // an associated UNINITIALIZED entry in the stack map frame that is
              // supposed to be pointing at a NEW opcode.
              processMethodEntry();
          }
      }
docs: Begin processing a method. This is called when the instruction stream
  for a method is first encountered. Since this is the first callback, we
  use this to add the byte codes required for entry tracing.