e.invoke_virtual(Constants.TYPE_STRING_BUFFER, APPEND_DOUBLE);
e.invoke_virtual(Constants.TYPE_STRING_BUFFER, APPEND_FLOAT);
    private static void append_string_helper(CodeEmitter e,                                             Type type,                                             ArrayDelimiters delims,                                             Customizer customizer,                                             ProcessArrayCallback callback) {        Label skip = e.make_label();        Label end = e.make_label();        if (TypeUtils.isPrimitive(type)) {            switch (type.getSort()) {            case Type.INT:            case Type.SHORT:            case Type.BYTE:                e.invoke_virtual(Constants.TYPE_STRING_BUFFER, APPEND_INT);                break;            case Type.DOUBLE:                e.invoke_virtual(Constants.TYPE_STRING_BUFFER, APPEND_DOUBLE);                break;            case Type.FLOAT:                e.invoke_virtual(Constants.TYPE_STRING_BUFFER, APPEND_DOUBLE);                break;            case Type.LONG:                e.invoke_virtual(Constants.TYPE_STRING_BUFFER, APPEND_LONG);                break;            case Type.BOOLEAN:                e.invoke_virtual(Constants.TYPE_STRING_BUFFER, APPEND_BOOLEAN);                break;            case Type.CHAR:                e.invoke_virtual(Constants.TYPE_STRING_BUFFER, APPEND_CHAR);                break;            }        } else if (TypeUtils.isArray(type)) {            e.dup();            e.ifnull(skip);            e.swap();            e.push(delims.before);            e.invoke_virtual(Constants.TYPE_STRING_BUFFER, APPEND_STRING);            e.swap();            ComplexOps.process_array(e, type, callback);            shrinkStringBuffer(e, 2);            e.push(delims.after);            e.invoke_virtual(Constants.TYPE_STRING_BUFFER, APPEND_STRING);        } else {            e.dup();            e.ifnull(skip);            if (customizer != null) {                customizer.customize(e, type);            }            e.invoke_virtual(Constants.TYPE_OBJECT, TO_STRING);            e.invoke_virtual(Constants.TYPE_STRING_BUFFER, APPEND_STRING);        }        e.goTo(end);        e.mark(skip);        e.pop();        e.push("null");        e.invoke_virtual(Constants.TYPE_STRING_BUFFER, APPEND_STRING);        e.mark(end);    }