@@ -0,0 +1,962 @@
+package monoxide.forgebackup.coremod.asm;%0A%0Aimport java.util.Map;%0A%0Aimport org.objectweb.asm.ClassReader;%0Aimport org.objectweb.asm.ClassWriter;%0Aimport org.objectweb.asm.tree.ClassNode;%0A%0Aimport com.google.common.collect.Maps;%0A%0Aimport cpw.mods.fml.relauncher.IClassTransformer;%0A%0Apublic abstract class AsmTransformer implements IClassTransformer %7B%0A%09protected final Map%3CString, Map%3CString, String%3E%3E mappings = Maps.newHashMap();%0A%09%0A%09@Override%0A%09public final byte%5B%5D transform(String name, byte%5B%5D bytes) %7B%0A%09%09if (mappings.containsKey(name)) %7B%0A%09%09%09ClassNode classNode = new ClassNode();%0A%09%09%09ClassReader classReader = new ClassReader(bytes);%0A%09%09%09classReader.accept(classNode, 0);%0A%09%09%09%0A%09%09%09doTransform(classNode, mappings.get(name));%0A%09%09%09%0A%09%09%09ClassWriter writer = new ClassWriter(ClassWriter.COMPUTE_MAXS);%0A%09%09%09classNode.accept(writer);%0A%09%09%09return writer.toByteArray();%0A%09%09%7D%0A%09%09return bytes;%0A%09%7D%0A%09%0A%09protected abstract void doTransform(ClassNode classNode, Map%3CString, String%3E mapping);%0A%7D%0A

Create ASMTransformer superclass