override def visit()

in chill-scala/src/main/scala/com/twitter/chill/ClosureCleaner.scala [313:345]


  override def visit(
      version: Int,
      access: Int,
      name: String,
      sig: String,
      superName: String,
      interfaces: Array[String]
  ): Unit =
    myName = name

  override def visitMethod(
      access: Int,
      name: String,
      desc: String,
      sig: String,
      exceptions: Array[String]
  ): MethodVisitor =
    new MethodVisitor(ASM7) {
      override def visitMethodInsn(op: Int, owner: String, name: String, desc: String, itf: Boolean): Unit = {
        val argTypes = Type.getArgumentTypes(desc)
        if (
          op == INVOKESPECIAL && name == "<init>" && argTypes.nonEmpty
          && argTypes(0).toString.startsWith("L")
          && argTypes(0).getInternalName == myName
        ) {
          output += Class.forName(
            owner.replace('/', '.'),
            false,
            Thread.currentThread.getContextClassLoader
          )
        }
      }
    }