package eu.bibl.cfide.engine.launch.dump; import org.objectweb.asm.ClassWriter; public class CustomClassWriter extends ClassWriter { protected ClassLoader cl; public CustomClassWriter(ClassLoader cl, int flags) { super(flags); this.cl = cl; } @Override protected String getCommonSuperClass(String paramString1, String paramString2) { Class<?> localClass1; Class<?> localClass2; try { localClass1 = cl.loadClass(paramString1.replace('/', '.')); localClass2 = cl.loadClass(paramString2.replace('/', '.')); } catch (Exception localException) { throw new RuntimeException(localException.toString()); } if (localClass1.isAssignableFrom(localClass2)) { return paramString1; } if (localClass2.isAssignableFrom(localClass1)) { return paramString2; } if ((localClass1.isInterface()) || (localClass2.isInterface())) { return "java/lang/Object"; } do { localClass1 = localClass1.getSuperclass(); } while (!localClass1.isAssignableFrom(localClass2)); return localClass1.getName().replace('.', '/'); } }