WIP Use released asm, shaded

the released asm is compiled against java 5,
so no generics :-(

we had diverged in the following ways, none of which I think are essential

commit 22ee2df1a5
Author: Miguel Garcia <miguelalfredo.garcia@epfl.ch>
Date:   6 months ago

    new bytecode emitter, GenBCode, for now under a flag

patched asm as a  workaround, as described in
http://mail-archive.ow2.org/asm/2012-12/msg00000.html

I don't see any use of this pattern in the current code base

commit b50e6b4bbe
Author: Miguel Garcia <miguelalfredo.garcia@epfl.ch>
Date:   8 months ago

    check added instruction to ASM MethodNode

diff --git a/src/asm/scala/tools/asm/tree/InsnList.java b/src/asm/scala/tools/asm/tree/InsnList.java
index 55d83c2e8b..b1e2d97c6f 100644
--- a/src/asm/scala/tools/asm/tree/InsnList.java
+++ b/src/asm/scala/tools/asm/tree/InsnList.java
@@ -244,6 +244,14 @@ public class InsnList {
      *            {@link InsnList}</i>.
      */
     public void add(final AbstractInsnNode insn) {
+        if(insn.prev != null || insn.next != null) {
+            // Adding an instruction that still refers to others (in the same or another InsnList) leads to hard to debug bugs.
+            // Initially everything may look ok (e.g. iteration follows `next` thus a stale `prev` isn't noticed).
+            // However, a stale link brings the doubly-linked into disarray e.g. upon removing an element,
+            // which results in the `next` of a stale `prev` being updated, among other failure scenarios.
+            // Better fail early.
+            throw new RuntimeException("Instruction " + insn + " already belongs to some InsnList.");
+        }