docs: def Allow(self, path, require=None, *args, **kwargs):
      """Checks if given path pattern fits the subject passed in constructor.
  
      Registers "allow" check in this helper. "Allow" check consists of
      fnmatch path pattern and optional "require" check. *args and *kwargs will
      be passed to the optional "require" check function.
  
      All registered "allow" checks are executed in CheckAccess() call. The
      following is done for every check:
      * If fnmatch path pattern does not match the check is skipped.
      * If fnmatch path pattern matches and the require parameter is None (does
        not specify an additiona check) then match is successful.
        No other checks are executed.
      * If fnmatch path pattern matches and the require parameter specifies an
        additional check, which is a function, and this function returns True,
        then match is successful. No other checks are executed.
      * If fnmatch path pattern matches but additional check raises,
        match is unsuccessful, no other checks are executed, and exception
        is propagated.
  
      Args:
        path: A string, which is a fnmatch pattern.
        require: Function that will be called to perform additional checks.
                 None by default. It will be called like this:
                 require(subject_urn, *args, **kwargs).
                 If this function returns True, the check is considered passed.
                 If it raises, the check is considered failed, no other checks
                 are made and exception is propagated.
        *args: Positional arguments that will be passed to "require" function.
        **kwargs: Keyword arguments that will be passed to "require" function.
      """
      regex_text = fnmatch.translate(path)
      regex = re.compile(regex_text)
      self.checks.append((regex_text, regex, require, args, kwargs))