code: byte[] transformBytes(byte[] bytes) {
          ClassCollector visitor = new ClassCollector();
          visitVerbose(bytes, visitor);
          ClassInfo classInfo = visitor.getClassInfo();
          boolean instrumented = false;
  
          for (ClassGenerator gen : generators) {
              if (!gen.canInstrument(classInfo)) {
                  continue;
              }
              ClassWriter writer = new ClassWriter(ClassWriter.COMPUTE_MAXS);
              gen.init(writer, classInfo);
              visitVerbose(bytes, gen);
              if (gen.hasInstrumented()) {
                  bytes = writer.toByteArray();
                  instrumented = true;
                  System.out.println(gen.getClass().getSimpleName() + " instrumented "
                          + classInfo.getName().replace('/', '.'));
              }
          }
  
          // If any generators instrumented the class bytes, return the
          // instrumented bytes. Otherwise, return null.
          return instrumented ? bytes : null;
      }
docs: /*
  Visible for testing.