dup(); ifnull(oneIsNull); swap(); invoke(equalsMethod); ifne(label); goTo(end); nop(oneIsNull); pop(); ifnonnull(label);
nullcmp(notEquals, end); if (clazz.isArray()) { String checkContents = newLabel(); dup2(); arraylength(); swap(); arraylength(); if_icmpeq(checkContents); pop2(); goTo(notEquals); nop(checkContents); process_arrays(clazz, callback); } else { invoke(equalsMethod); ifeq(notEquals); }
    private void not_equals_helper(Class clazz, String label, ProcessArrayCallback callback) {        if (clazz.isArray()) {            process_array(clazz, callback);        } else if (clazz.isPrimitive()) {            if (returnType.equals(Double.TYPE)) {                dcmpg();                ifne(label);            } else if (returnType.equals(Long.TYPE)) {                lcmp();                ifne(label);            } else if (returnType.equals(Float.TYPE)) {                fcmpg();                ifne(label);            } else {                if_icmpne(label);            }        } else {            String oneIsNull = newLabel();            String end = newLabel();            dup();            ifnull(oneIsNull);            swap();            invoke(equalsMethod);            ifne(label);            goTo(end);            nop(oneIsNull);            pop();            ifnonnull(label);            nop(end);        }    }