A filter, with optional arguments.

        Arguments
        ---------
        _ (node) : parsimonious.nodes.Node.
        children : list
            - 0: string, name of the filter.
            - 1: list of instances of ``.resources.NamedArg``

        Returns
        -------
        .resources.Filter
            An instance of ``.resources.Filter`` with a name and a list of arguments.
            The list of arguments will be ``None`` if no parenthesis.

        Example
        -------

        >>> FiltersParserMixin(r'foo', default_rule='FILTER').data
        .foo
        >>> FiltersParserMixin(r'foo()', default_rule='FILTER').data
        .foo()
        >>> FiltersParserMixin(r'foo(1)', default_rule='FILTER').data
        .foo(1)
        >>> FiltersParserMixin(r'foo(1, bar="baz")', default_rule='FILTER').data
        .foo(1, bar="baz")

def visit_filter(self, _, children):
        """A filter, with optional arguments.

        Arguments
        ---------
        _ (node) : parsimonious.nodes.Node.
        children : list
            - 0: string, name of the filter.
            - 1: list of instances of ``.resources.NamedArg``

        Returns
        -------
        .resources.Filter
            An instance of ``.resources.Filter`` with a name and a list of arguments.
            The list of arguments will be ``None`` if no parenthesis.

        Example
        -------

        >>> FiltersParserMixin(r'foo', default_rule='FILTER').data
        .foo
        >>> FiltersParserMixin(r'foo()', default_rule='FILTER').data
        .foo()
        >>> FiltersParserMixin(r'foo(1)', default_rule='FILTER').data
        .foo(1)
        >>> FiltersParserMixin(r'foo(1, bar="baz")', default_rule='FILTER').data
        .foo(1, bar="baz")

        """

        return self.Filter(
            name=children[0],
            args=children[1],
        )