public void process()

in TransformCore/src/main/java/com/facebook/ads/injkit/ClassFileProcessorImpl.java [33:81]


  public void process(InputStream input, OutputStream output)
      throws IOException, AnnotationProcessingException {
    ClassReader classReader = new ClassReader(input);
    ClassNode node = new ClassNode();
    classReader.accept(node, 0);

    transformClassNode(node);

    ClassWriter classWriter =
        new ClassWriter(ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS) {
          @Override
          protected ClassLoader getClassLoader() {
            return classLoader;
          }

          @Override
          protected String getCommonSuperClass(String type1, String type2) {
            Class<?> class1;
            try {
              class1 = classLoader.loadClass(AsmNameUtils.classInternalNameToJavaName(type1));
            } catch (Exception e) {
              throw new TypeNotPresentException(type1, e);
            }
            Class<?> class2;
            try {
              class2 = classLoader.loadClass(AsmNameUtils.classInternalNameToJavaName(type2));
            } catch (Exception e) {
              throw new TypeNotPresentException(type2, e);
            }
            if (class1.isAssignableFrom(class2)) {
              return type1;
            }
            if (class2.isAssignableFrom(class1)) {
              return type2;
            }
            if (class1.isInterface() || class2.isInterface()) {
              return "java/lang/Object";
            } else {
              do {
                class1 = class1.getSuperclass();
              } while (!class1.isAssignableFrom(class2));

              return AsmNameUtils.classJavaNameToInternalName(class1.getName());
            }
          }
        };
    node.accept(classWriter);
    output.write(classWriter.toByteArray());
  }