original_docstring: 
      Helper method for signature symbols (defaults, type hints) protection.
  
      Returns either `val`, or a protection symbol. In that case the protection symbol
      is created with name `varname` and inserted into `evaldict`
  
      :param val:
      :param needs_protection:
      :param varname:
      :param evaldict:
      :return:
      
docstring: Helper method for signature symbols (defaults, type hints) protection.
  Returns either `val`, or a protection symbol. In that case the protection symbol
  is created with name `varname` and inserted into `evaldict`
docstring_tokens: Helper method for signature symbols ( defaults type hints ) protection . Returns either ` val ` or a protection symbol . In that case the protection symbol is created with name ` varname ` and inserted into ` evaldict `
code: def _protect_signature_symbol(val, needs_protection, varname, evaldict):
      """
      Helper method for signature symbols (defaults, type hints) protection.
  
      Returns either `val`, or a protection symbol. In that case the protection symbol
      is created with name `varname` and inserted into `evaldict`
  
      :param val:
      :param needs_protection:
      :param varname:
      :param evaldict:
      :return:
      """
      if needs_protection:
          # store the object in the evaldict and insert name
          evaldict[varname] = val
          return _SymbolRef(varname)
      else:
          return val
code_tokens: def _protect_signature_symbol ( val , needs_protection , varname , evaldict ) : if needs_protection : evaldict [ varname ] = val return _SymbolRef ( varname ) else : return val
short_docstring: Helper method for signature symbols (defaults, type hints) protection.
short_docstring_tokens: Helper method for signature symbols ( defaults type hints ) protection .
comment: """
      Helper method for signature symbols (defaults, type hints) protection.
  
      Returns either `val`, or a protection symbol. In that case the protection symbol
      is created with name `varname` and inserted into `evaldict`
  
      :param val:
      :param needs_protection:
      :param varname:
      :param evaldict:
      :return:
      """$SEP$# store the object in the evaldict and insert name