docs: def _annotate_fn_args(stack, fn_opname, nargs, nkw=-1, consume_fn_name=True):
    """Add commas and equals as appropriate to function argument lists in the stack."""
    kwarg_names = []
    if nkw == -1:
      if sys.version_info[0] < 3:
        # Compute nkw and nargs from nargs for python 2.7
        nargs, nkw = (nargs % 256, 2 * nargs // 256)
      else:
        if fn_opname == 'CALL_FUNCTION_KW':
          if qj._DEBUG_QJ:
            assert len(stack) and stack[-1].opname == 'LOAD_CONST'
          if not len(stack) or stack[-1].opname != 'LOAD_CONST':
            return
          se = stack.pop()
          kwarg_names = se.oparg_repr[::-1]
          se.oparg_repr = ['']
          nkw = len(kwarg_names)
          nargs -= nkw
          if qj._DEBUG_QJ:
            assert nargs >= 0 and nkw > 0
        else:
          nkw = 0
  
    for i in range(nkw):
      se = stack.pop()
      if se.stack_depth == 0 and (len(se.oparg_repr) == 0 or se.oparg_repr[0] == ''):
        # Skip stack entries that don't have any effect on the stack
        continue
      if i % 2 == 1 and sys.version_info[0] < 3:
        if qj._DEBUG_QJ:
          assert se.opname == 'LOAD_CONST'
        if se.opname == 'LOAD_CONST':
          # kwargs are pairs of key=value in code
          se.oparg_repr += ['=']
      else:
        pops = []
        if se.opname.startswith('CALL_FUNCTION'):
          _annotate_fn_args(stack[:], se.opname, se.oparg, -1, True)
        pops = _collect_pops(stack, se.stack_depth - 1 if se.opname.startswith('CALL_FUNCTION') else 0, [], False)
        if i > 1 and len(pops):
          pops[-1].oparg_repr += [',']
        if sys.version_info[0] >= 3:
          target_se = pops[-1] if len(pops) else se
          target_se.oparg_repr = [kwarg_names[i], '='] + target_se.oparg_repr
  
    for i in range(nargs):
      se = stack.pop()
      if se.opname.startswith('CALL_FUNCTION'):
        _annotate_fn_args(stack, se.opname, se.oparg, -1, True)
      elif len(se.oparg_repr) and se.oparg_repr[0] in {']', '}', ')'}:
        if (i > 0 or nkw > 0):
          se.oparg_repr += [',']
      else:
        pops = _collect_pops(stack, se.stack_depth, [], False)
        if (i > 0 or nkw > 0) and len(pops):
          pops[-1].oparg_repr += [',']
  
    if consume_fn_name:
      _collect_pops(stack, -1, [], False)