@Override
    protected boolean canRun(ClassNode node) {
        if (!node.superName.endsWith(classNodes.get("Renderable").name) || classNodes.containsKey("Model"))
            return false;
        ListIterator<MethodNode> mnLi = node.methods.listIterator();
        int count = 0; // static boolean[] of length 4096, we want 2 of them.
        while (mnLi.hasNext()) {
            MethodNode mn = mnLi.next();
            if (mn.name.equals("<clinit>")) {
                ListIterator<AbstractInsnNode> ainli = mn.instructions.iterator();
                while (ainli.hasNext()) {
                    AbstractInsnNode ain = ainli.next();
                    if (ain.getOpcode() == Opcodes.NEWARRAY) {
                        if (((IntInsnNode) ain).operand == 4) {
                            AbstractInsnNode prev = mn.instructions.get(ainli.previousIndex() - 1);
                            if (prev.getOpcode() == Opcodes.SIPUSH) {
                                if (((IntInsnNode) prev).operand == 4096) {
                                    count++;
                                }
                            }
                        }
                    }
                }
                break;
            }
        }
        return count == 2;
    }