code: public static byte[] transform(byte[] bytes, boolean skipIfNotPreprocessed) throws IOException {
  		if (detailedTransformTrace && tc.isEntryEnabled())
              Tr.entry(tc, "transform");
          
          
          
          ClassReader reader = new ClassReader(bytes);
          ClassWriter writer = new ClassWriter(reader, ClassWriter.COMPUTE_MAXS);
  
          StringWriter sw = null;
          ClassVisitor visitor = writer;
          if (tc.isDumpEnabled()) {
              sw = new StringWriter();
              visitor = new CheckClassAdapter(visitor, false);
              visitor = new TraceClassVisitor(visitor, new PrintWriter(sw));
          }
  
          LibertyTracingClassAdapter tracingClassAdapter = new LibertyTracingClassAdapter(visitor, skipIfNotPreprocessed);
          try {
              // Class reader must maintain all metadata information that's present in
              // the class
              reader.accept(tracingClassAdapter, skipDebugData ? ClassReader.SKIP_DEBUG : 0);
          } catch (Throwable t) {
              IOException ioe = new IOException("Unable to instrument class stream with trace: " + t.getMessage(), t);
              throw ioe;
          }
  
          // Provide a whole lot of detailed information on the resulting class
          if (detailedTransformTrace && tc.isDumpEnabled() && tracingClassAdapter.isClassModified()) {
              Tr.dump(tc, "Transformed class", sw);
          }
  
          // Try to short circuit when the class didn't change
          byte[] result = tracingClassAdapter.isClassModified() ? writer.toByteArray() : null;
          if (detailedTransformTrace && tc.isEntryEnabled())
              Tr.exit(tc, "transform", result);
          return result;
      }
docs: Instrument the class at the current position in the specified input stream.
  
  @return instrumented class file or null if the class has already
  been instrumented.
  
  @throws IOException if an error is encountered while reading from
  the <code>InputStream</code>