code: def make_node(cls, lineno, fname, func=None, type_=None, *operands):
          
          if func is not None and len(operands) == 1:  # Try constant-folding
              if is_number(operands[0]) or is_string(operands[0]):  # e.g. ABS(-5)
                  return SymbolNUMBER(func(operands[0].value), type_=type_, lineno=lineno)
  
          return cls(lineno, fname, type_, *operands)
docs: Creates a node for a unary operation. E.g. -x or LEN(a$)
  
          Parameters:
              -func: function used on constant folding when possible
              -type_: the resulting type (by default, the same as the argument).
                  For example, for LEN (str$), result type is 'u16'
                  and arg type is 'string'