// This file is generated by Tools/cases_generator/generate_cases.py
// from:
//   Python/bytecodes.c
// Do not edit!

        case NOP: {
            break;
        }

        case RESUME: {
            break;
        }

        case POP_TOP: {
            STACK_SHRINK(1);
            break;
        }

        case PUSH_NULL: {
            STACK_GROW(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case END_SEND: {
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case UNARY_NEGATIVE: {
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case UNARY_NOT: {
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case TO_BOOL: {
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case TO_BOOL_BOOL: {
            break;
        }

        case TO_BOOL_INT: {
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case TO_BOOL_LIST: {
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case TO_BOOL_NONE: {
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case TO_BOOL_STR: {
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case TO_BOOL_ALWAYS_TRUE: {
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case UNARY_INVERT: {
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case _GUARD_BOTH_INT: {
            break;
        }

        case _GUARD_BOTH_FLOAT: {
            break;
        }

        case _BINARY_OP_MULTIPLY_FLOAT: {
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case _BINARY_OP_ADD_FLOAT: {
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case _BINARY_OP_SUBTRACT_FLOAT: {
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case _GUARD_BOTH_UNICODE: {
            break;
        }

        case _BINARY_OP_ADD_UNICODE: {
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case BINARY_SUBSCR: {
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case BINARY_SLICE: {
            STACK_SHRINK(2);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case STORE_SLICE: {
            STACK_SHRINK(4);
            break;
        }

        case BINARY_SUBSCR_LIST_INT: {
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case BINARY_SUBSCR_STR_INT: {
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case BINARY_SUBSCR_TUPLE_INT: {
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case BINARY_SUBSCR_DICT: {
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case LIST_APPEND: {
            STACK_SHRINK(1);
            break;
        }

        case SET_ADD: {
            STACK_SHRINK(1);
            break;
        }

        case STORE_SUBSCR: {
            STACK_SHRINK(3);
            break;
        }

        case STORE_SUBSCR_LIST_INT: {
            STACK_SHRINK(3);
            break;
        }

        case STORE_SUBSCR_DICT: {
            STACK_SHRINK(3);
            break;
        }

        case DELETE_SUBSCR: {
            STACK_SHRINK(2);
            break;
        }

        case CALL_INTRINSIC_1: {
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case CALL_INTRINSIC_2: {
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case _POP_FRAME: {
            STACK_SHRINK(1);
            break;
        }

        case GET_AITER: {
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case GET_ANEXT: {
            STACK_GROW(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case GET_AWAITABLE: {
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case POP_EXCEPT: {
            STACK_SHRINK(1);
            break;
        }

        case LOAD_ASSERTION_ERROR: {
            STACK_GROW(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case LOAD_BUILD_CLASS: {
            STACK_GROW(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case STORE_NAME: {
            STACK_SHRINK(1);
            break;
        }

        case DELETE_NAME: {
            break;
        }

        case UNPACK_SEQUENCE: {
            STACK_SHRINK(1);
            STACK_GROW(oparg);
            break;
        }

        case UNPACK_SEQUENCE_TWO_TUPLE: {
            STACK_SHRINK(1);
            STACK_GROW(oparg);
            break;
        }

        case UNPACK_SEQUENCE_TUPLE: {
            STACK_SHRINK(1);
            STACK_GROW(oparg);
            break;
        }

        case UNPACK_SEQUENCE_LIST: {
            STACK_SHRINK(1);
            STACK_GROW(oparg);
            break;
        }

        case UNPACK_EX: {
            STACK_GROW((oparg & 0xFF) + (oparg >> 8));
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1 - (oparg >> 8))), true);
            break;
        }

        case STORE_ATTR: {
            STACK_SHRINK(2);
            break;
        }

        case DELETE_ATTR: {
            STACK_SHRINK(1);
            break;
        }

        case STORE_GLOBAL: {
            STACK_SHRINK(1);
            break;
        }

        case DELETE_GLOBAL: {
            break;
        }

        case _LOAD_LOCALS: {
            STACK_GROW(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case _LOAD_FROM_DICT_OR_GLOBALS: {
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case LOAD_GLOBAL: {
            STACK_GROW(1);
            STACK_GROW(((oparg & 1) ? 1 : 0));
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1 - (oparg & 1 ? 1 : 0))), true);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-(oparg & 1 ? 1 : 0))), true);
            break;
        }

        case _GUARD_GLOBALS_VERSION: {
            break;
        }

        case _GUARD_BUILTINS_VERSION: {
            break;
        }

        case _LOAD_GLOBAL_MODULE: {
            STACK_GROW(1);
            STACK_GROW(((oparg & 1) ? 1 : 0));
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1 - (oparg & 1 ? 1 : 0))), true);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-(oparg & 1 ? 1 : 0))), true);
            break;
        }

        case _LOAD_GLOBAL_BUILTINS: {
            STACK_GROW(1);
            STACK_GROW(((oparg & 1) ? 1 : 0));
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1 - (oparg & 1 ? 1 : 0))), true);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-(oparg & 1 ? 1 : 0))), true);
            break;
        }

        case DELETE_FAST: {
            break;
        }

        case DELETE_DEREF: {
            break;
        }

        case LOAD_FROM_DICT_OR_DEREF: {
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case LOAD_DEREF: {
            STACK_GROW(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case STORE_DEREF: {
            STACK_SHRINK(1);
            break;
        }

        case COPY_FREE_VARS: {
            break;
        }

        case BUILD_STRING: {
            STACK_SHRINK(oparg);
            STACK_GROW(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case BUILD_TUPLE: {
            STACK_SHRINK(oparg);
            STACK_GROW(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case BUILD_LIST: {
            STACK_SHRINK(oparg);
            STACK_GROW(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case LIST_EXTEND: {
            STACK_SHRINK(1);
            break;
        }

        case SET_UPDATE: {
            STACK_SHRINK(1);
            break;
        }

        case BUILD_SET: {
            STACK_SHRINK(oparg);
            STACK_GROW(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case BUILD_MAP: {
            STACK_SHRINK(oparg*2);
            STACK_GROW(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case SETUP_ANNOTATIONS: {
            break;
        }

        case BUILD_CONST_KEY_MAP: {
            STACK_SHRINK(oparg);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case DICT_UPDATE: {
            STACK_SHRINK(1);
            break;
        }

        case DICT_MERGE: {
            STACK_SHRINK(1);
            break;
        }

        case MAP_ADD: {
            STACK_SHRINK(2);
            break;
        }

        case LOAD_SUPER_ATTR_ATTR: {
            STACK_SHRINK(2);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(0)), true);
            break;
        }

        case LOAD_SUPER_ATTR_METHOD: {
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-2)), true);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case LOAD_ATTR: {
            STACK_GROW(((oparg & 1) ? 1 : 0));
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1 - (oparg & 1 ? 1 : 0))), true);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-(oparg & 1 ? 1 : 0))), true);
            break;
        }

        case _GUARD_TYPE_VERSION: {
            break;
        }

        case _CHECK_MANAGED_OBJECT_HAS_VALUES: {
            break;
        }

        case _LOAD_ATTR_INSTANCE_VALUE: {
            STACK_GROW(((oparg & 1) ? 1 : 0));
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1 - (oparg & 1 ? 1 : 0))), true);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-(oparg & 1 ? 1 : 0))), true);
            break;
        }

        case COMPARE_OP: {
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case COMPARE_OP_FLOAT: {
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case COMPARE_OP_INT: {
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case COMPARE_OP_STR: {
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case IS_OP: {
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case CONTAINS_OP: {
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case CHECK_EG_MATCH: {
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-2)), true);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case CHECK_EXC_MATCH: {
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case IS_NONE: {
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case GET_LEN: {
            STACK_GROW(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case MATCH_CLASS: {
            STACK_SHRINK(2);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case MATCH_MAPPING: {
            STACK_GROW(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case MATCH_SEQUENCE: {
            STACK_GROW(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case MATCH_KEYS: {
            STACK_GROW(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case GET_ITER: {
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case GET_YIELD_FROM_ITER: {
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case _ITER_CHECK_LIST: {
            break;
        }

        case _IS_ITER_EXHAUSTED_LIST: {
            STACK_GROW(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case _ITER_NEXT_LIST: {
            STACK_GROW(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case _ITER_CHECK_TUPLE: {
            break;
        }

        case _IS_ITER_EXHAUSTED_TUPLE: {
            STACK_GROW(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case _ITER_NEXT_TUPLE: {
            STACK_GROW(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case _ITER_CHECK_RANGE: {
            break;
        }

        case _IS_ITER_EXHAUSTED_RANGE: {
            STACK_GROW(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case _ITER_NEXT_RANGE: {
            STACK_GROW(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case WITH_EXCEPT_START: {
            STACK_GROW(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case PUSH_EXC_INFO: {
            STACK_GROW(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-2)), true);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case _CHECK_PEP_523: {
            break;
        }

        case _CHECK_FUNCTION_EXACT_ARGS: {
            break;
        }

        case _CHECK_STACK_SPACE: {
            break;
        }

        case _INIT_CALL_PY_EXACT_ARGS: {
            STACK_SHRINK(oparg);
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case _PUSH_FRAME: {
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case CALL_NO_KW_TYPE_1: {
            STACK_SHRINK(oparg);
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case CALL_NO_KW_STR_1: {
            STACK_SHRINK(oparg);
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case CALL_NO_KW_TUPLE_1: {
            STACK_SHRINK(oparg);
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case EXIT_INIT_CHECK: {
            STACK_SHRINK(1);
            break;
        }

        case CALL_NO_KW_BUILTIN_O: {
            STACK_SHRINK(oparg);
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case CALL_NO_KW_BUILTIN_FAST: {
            STACK_SHRINK(oparg);
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case CALL_NO_KW_LEN: {
            STACK_SHRINK(oparg);
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case CALL_NO_KW_ISINSTANCE: {
            STACK_SHRINK(oparg);
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case CALL_NO_KW_METHOD_DESCRIPTOR_O: {
            STACK_SHRINK(oparg);
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS: {
            STACK_SHRINK(oparg);
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case CALL_NO_KW_METHOD_DESCRIPTOR_FAST: {
            STACK_SHRINK(oparg);
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case MAKE_FUNCTION: {
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case SET_FUNCTION_ATTRIBUTE: {
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case BUILD_SLICE: {
            STACK_SHRINK(((oparg == 3) ? 1 : 0));
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case CONVERT_VALUE: {
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case FORMAT_SIMPLE: {
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case FORMAT_WITH_SPEC: {
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case BINARY_OP: {
            STACK_SHRINK(1);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case SWAP: {
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-2 - (oparg-2))), true);
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true);
            break;
        }

        case _POP_JUMP_IF_FALSE: {
            STACK_SHRINK(1);
            break;
        }

        case _POP_JUMP_IF_TRUE: {
            STACK_SHRINK(1);
            break;
        }

        case JUMP_TO_TOP: {
            break;
        }

        case SAVE_IP: {
            break;
        }

        case SAVE_CURRENT_IP: {
            break;
        }

        case EXIT_TRACE: {
            break;
        }

        case INSERT: {
            PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1 - oparg)), true);
            break;
        }
