code: def stack_effect(self):
          
          if self.opcode == NOP.opcode:  # noqa
              # dis.stack_effect is broken here
              return 0
  
          return stack_effect(
              self.opcode,
              *((self.arg if isinstance(self.arg, int) else 0,)
                if self.have_arg else ())
          )
docs: The net effect of executing this instruction on the interpreter stack.
  
          Instructions that pop values off the stack have negative stack effect
          equal to the number of popped values.
  
          Instructions that push values onto the stack have positive stack effect
          equal to the number of popped values.
  
          Examples
          --------
          - LOAD_{FAST,NAME,GLOBAL,DEREF} push one value onto the stack.
            They have a stack_effect of 1.
          - POP_JUMP_IF_{TRUE,FALSE} always pop one value off the stack.
            They have a stack effect of -1.
          - BINARY_* instructions pop two instructions off the stack, apply a
            binary operator, and push the resulting value onto the stack.
            They have a stack effect of -1 (-2 values consumed + 1 value pushed).