code: def args_match(m_args, m_kwargs, default, *args, **kwargs):
      
      if len(m_args) > len(args):
          return False
      for m_arg, arg in zip(m_args, args):
          matches = arg_match(m_arg, arg, eq)
          if not matches or matches is InvalidArg:
              return False  # bail out
  
      if m_kwargs:
          for name, m_arg in m_kwargs.items():
              name, comparator = arg_comparitor(name)
              arg = kwargs.get(name)
              if not arg_match(m_arg, arg, comparator, default):
                  return False  # bail out
      return True
docs: :param m_args:   values to match args against
      :param m_kwargs: values to match kwargs against
      :param arg: args to match
      :param arg: kwargs to match