void (int opcode, String type) { final TypeRepr typ = type.startsWith("[")? TypeRepr.getType(type) : new TypeRepr.ClassType(type); if (opcode == Opcodes.NEW) { addUsage(new ClassUsage(((TypeRepr.ClassType)typ).getJvmName())); addUsage(new ClassNewUsage(((TypeRepr.ClassType)typ).getJvmName())); final int ktLambdaMarker = type.indexOf(KOTLIN_LAMBDA_USAGE_CLASS_MARKER); if (ktLambdaMarker > 0) { final int ifNameStart = ktLambdaMarker + KOTLIN_LAMBDA_USAGE_CLASS_MARKER.length(); final int ifNameEnd = type.indexOf("$", ifNameStart); if (ifNameEnd > ifNameStart) { addUsage(new ClassNewUsage(type.substring(ifNameStart, ifNameEnd).replace('_', '/'))); } } } else if (opcode == Opcodes.ANEWARRAY) { if (typ instanceof TypeRepr.ClassType) { addUsage(new ClassUsage(((TypeRepr.ClassType)typ).getJvmName())); addUsage(new ClassNewUsage(((TypeRepr.ClassType)typ).getJvmName())); } } Iterators.collect(typ.getUsages(), myUsages); super.visitTypeInsn(opcode, type); }