def METHOD_NAME():
    formulas = ['H2O', 'C5H2OH']
    chem_mods = ['-H+C']
    neutral_losses = ['-O', '-C']
    target_adducts = ['+H', '+Na', '[M]+']
    target_modifiers = [
        format_modifiers(cm, nl, ta)
        for cm, nl, ta in product(['', *chem_mods], ['', *neutral_losses], target_adducts)
    ]
    decoy_sample_size = 5
    fdr_config = {**FDR_CONFIG, 'decoy_sample_size': decoy_sample_size}
    fdr = FDR(
        fdr_config=fdr_config,
        chem_mods=chem_mods,
        neutral_losses=neutral_losses,
        target_adducts=target_adducts,
        analysis_version=1,
    )
    fdr.decoy_adducts_selection(target_formulas=['H2O', 'C5H2OH'])
    ions = fdr.ion_tuples()
    assert type(ions) == list
    # total number varies because different (formula, modifier) pairs may receive the same (formula, decoy_modifier) pair
    min_count = len(formulas) * len(target_modifiers)
    max_count = len(formulas) * len(target_modifiers) * (1 + decoy_sample_size)
    assert min_count < len(ions) <= max_count
    target_ions = list(product(formulas, target_modifiers))
    assert set(target_ions).issubset(set(map(tuple, ions)))