docs: def accept_path(path, ref_path):
      """
      :param path: a logic tree path (list or tuple of strings)
      :param ref_path: reference logic tree path
      :returns: True if `path` is consistent with `ref_path`, False otherwise
  
      >>> accept_path(['SM2'], ('SM2', 'a3b1'))
      False
      >>> accept_path(['SM2', '@'], ('SM2', 'a3b1'))
      True
      >>> accept_path(['@', 'a3b1'], ('SM2', 'a3b1'))
      True
      >>> accept_path('@@', ('SM2', 'a3b1'))
      True
      """
      if len(path) != len(ref_path):
          return False
      for a, b in zip(path, ref_path):
          if a != '@' and a != b:
              return False
      return True