def free_operator(
            self,
            name=None,
            function=None,
            symbol=None,
            return_type=None,
            arg_types=None,
            header_dir=None,
            header_file=None,
            recursive=None):
        """
        Returns reference to free operator declaration that matches
        a defined criteria.

        """
        return (
            self._find_single(
                scopedef.scopedef_t._impl_matchers[namespace_t.free_operator],
                name=self._build_operator_name(name, function, symbol),
                symbol=symbol,
                function=self._build_operator_function(name, function),
                decl_type=self._impl_decl_types[namespace_t.free_operator],
                return_type=return_type,
                arg_types=arg_types,
                header_dir=header_dir,
                header_file=header_file,
                recursive=recursive)
        )