def METHOD_NAME(gmso_ff):
    """Return a foyer AtomTypingRulesProvider from a GMSO forcefield.
    Parameters
    ----------
    gmso_ff: gmso.core.forcefield.Forcefield
        The GMSO forcefield object to extract the rules from
    Returns
    -------
    AtomTypingRulesProvider
        The foyer.atomtyper.AtomTypingRulesProvider object used to parse atomtype definitions.
        Typically, SMARTS is the ruleset of choice. See https://github.com/mosdef-hub/foyer/issues/63
        for curently supported features in Foyer.
    """
    atom_type_defs = {}
    atom_type_overrides = {}
    for atom_type_name, atom_type in gmso_ff.atom_types.items():
        if atom_type.definition:
            atom_type_defs[atom_type_name] = atom_type.definition
        if atom_type.overrides:
            atom_type_overrides[atom_type_name] = atom_type.overrides
    return AtomTypingRulesProvider(
        atom_type_defs, atom_type_overrides, gmso_ff.non_element_types
    )