@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();
        }
    }
@ Override public void visitCode ( ) { if ( injectedTraceAnnotationVisitor == null && classAdapter . isInjectedTraceAnnotationRequired ( ) ) { AnnotationVisitor av = visitAnnotation ( INJECTED_TRACE_TYPE . getDescriptor ( ) , true ) ; av . visitEnd ( ) ; } super . visitCode ( ) ; methodEntryLabel = new Label ( ) ; visitLabel ( methodEntryLabel ) ; if ( ! waitingForSuper ) { processMethodEntry ( ) ; } }
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.