public byte[] transform(final ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException {
final ClassLoader previous = Thread.currentThread().getContextClassLoader();
Thread.currentThread().setContextClassLoader(loader);
try {
ClassPool pool = new ClassPool();
pool.appendClassPath(new LoaderClassPath(loader));
CtClass clazz = pool.makeClass(new ByteArrayInputStream(classfileBuffer));
if (isAlreadyTransformed(clazz) == false) {
log.info("Transforming " + className + " with " + getClass().getSimpleName());
transform(clazz);
} else {