public MethodVisitor createMethodVisitor()

in util/src/com/intellij/rt/coverage/instrumentation/ExtraFieldInstrumenter.java [84:118]


  public MethodVisitor createMethodVisitor(MethodVisitor mv,
                                           final String name) {
    if ("<clinit>".equals(name)) {
      if (myInterface && (myJava8AndAbove || myShouldCoverClinit)) {
        mv = new MethodVisitor(Opcodes.API_VERSION, mv) {
          @Override
          public void visitCode() {
            initField(mv);
            mySeenClinit = true;
            super.visitCode();
          }
        };
      }
      if (!myShouldCoverClinit) {
        return mv;
      }
    }

    if (myInterface) return mv;

    return new MethodVisitor(Opcodes.API_VERSION, mv) {
      @Override
      public void visitCode() {
        super.visitFieldInsn(Opcodes.GETSTATIC, myInternalClassName, myFieldName, myFieldType);

        final Label alreadyInitialized = new Label();
        super.visitJumpInsn(Opcodes.IFNONNULL, alreadyInitialized);

        initField(mv);

        super.visitLabel(alreadyInitialized);
        super.visitCode();
      }
    };
  }