docs: def is_wrapped_arg(self, *args, **kwargs):
          """decide if this decorator was called with arguments (eg, @dec(...)) or
          without (eg, @dec) so we can take the correct path when the decorator is
          invoked
  
          for the most part this works except for the case where you have one callback
          or class as the only passed in method to the decorator (eg, @dec(lambda x: x)),
          you can get around it by using named arguments (eg, @dec(callback=lambda x: x))
          or by setting required_args class property to True in your child decorator,
          otherwise this will try and autodiscover and have to recover when the
          decorator is actually invoked. I wracked my brain trying to figure out a
          better way to do this and I couldn't come up with anything and after the
          hours I've spent on it I'm just not sure there is a way to really know
  
          :param *args: any positional values passed into __new__ or __call__
          :param **kwargs: any named values passed into __new__ or __call__
          :returns: boolean
          """
          ret = False
          if len(args) == 1 and len(kwargs) == 0:
              #pout.v(args, self, isinstance(args[0], type), isinstance(args[0], FuncDecorator))
              ret = inspect.isfunction(args[0]) \
                  or isinstance(args[0], type) \
                  or isinstance(args[0], Decorator)
              if ret:
                  ret = not self.required_args
  #                 if ret:
  #                     frames = inspect.getouterframes(inspect.currentframe())
  #                     if len(frames) >= 3:
  #                         dec_frame = frames[2]
  #                         lines = "".join(dec_frame[4]).strip()
  #                         # we have 3 possibilities here:
  #                         # 1) @dec
  #                         # 2) @dec(...)
  #                         # 3) something else
  #                         # this will return True for 1 and 3
  #                         if re.match(r"^@", lines):
  #                             ret = "(" not in lines
  
          return ret