// assertEquals("Doo", innerClass(cn, 0).innerName);
assertEquals("B1", cn.outerClass);
assertEquals("([[LB1;LC1;LD1;)LC1;", cn.outerMethodDesc);
MethodNode mn0 = cn.methods.get(0);
ListIterator<AbstractInsnNode> it = mn0.instructions.iterator();
FieldInsnNode n0 = (FieldInsnNode) it.next();
assertEquals("D1", n0.owner);
assertEquals("LB1;", n0.desc);
assertEquals(Type.getType("LB1;"), ((LdcInsnNode) it.next()).cst);
assertEquals(Type.getType("[LD1;"), ((LdcInsnNode) it.next()).cst);
assertEquals(Type.getType("[I"), ((LdcInsnNode) it.next()).cst);
assertEquals(Type.getType("J"), ((LdcInsnNode) it.next()).cst);
assertEquals("B1", ((TypeInsnNode) it.next()).desc);
assertEquals("[LD1;", ((TypeInsnNode) it.next()).desc);
assertEquals("[I", ((TypeInsnNode) it.next()).desc);
assertEquals("J", ((TypeInsnNode) it.next()).desc);
MultiANewArrayInsnNode n3 = (MultiANewArrayInsnNode) it.next();
assertEquals("[[LB1;", n3.desc);
MethodInsnNode n4 = (MethodInsnNode) it.next();
assertEquals("D1", n4.owner);
assertEquals("([[LB1;LC1;LD1;)LC1;", n4.desc);
FrameNode fn0 = (FrameNode) it.next();
assertEquals(Collections.EMPTY_LIST, fn0.local);
assertEquals(Collections.EMPTY_LIST, fn0.stack);
assertEquals(Arrays.asList(new Object[] {"B1", "C1", "D1"}), ((FrameNode) it.next()).local);
assertEquals(Arrays.asList(new Object[] {Opcodes.INTEGER, "C1", Opcodes.INTEGER, "D1"}), ((FrameNode) it.next()).local);
assertEquals(Arrays.asList(new Object[] {Opcodes.INTEGER, Opcodes.INTEGER}), ((FrameNode) it.next()).local);
// assertEquals(Collections.EMPTY_LIST, fn0.stack);
TryCatchBlockNode tryCatchBlockNode = mn0.tryCatchBlocks.get(0);
assertEquals("C1", tryCatchBlockNode.type);
MethodNode mn1 = cn.methods.get(1);
assertEquals("([[LB1;LC1;LD1;)V", mn1.desc);
assertEquals(Arrays.asList(new String[] {"I", "J"}), mn1.exceptions);
}