def METHOD_NAME(test_helpers, dialect):
    helper = test_helpers[dialect]
    cll = helper.cll
    # Check our compositions give expected outputs
    df = pd.DataFrame(
        [
            {"unique_id": 1, "forename": "Tom", "surname": "Tim"},
            {"unique_id": 2, "forename": "Tom", "surname": "Tim"},
            {"unique_id": 3, "forename": "Tom", "surname": "Timothee"},
            {"unique_id": 4, "forename": "Sam", "surname": "Tarly"},
            {"unique_id": 5, "forename": "Sam", "surname": "Tim"},
        ]
    )
    # For testing the cll version
    dbl_null = cll.or_(cll.null_level("forename"), cll.null_level("surname"))
    both = cll.and_(cll.exact_match_level("forename"), cll.exact_match_level("surname"))
    either = cll.or_(
        cll.exact_match_level("forename"), cll.exact_match_level("surname")
    )
    full_name = {
        "output_column_name": "full_name",
        "comparison_levels": [
            dbl_null,
            both,
            either,
            cll.not_(both),  # acts as an "else" level
            cll.else_level(),
        ],
    }
    settings = {
        "link_type": "dedupe_only",
        "comparisons": [full_name],
    }
    linker = helper.Linker(df, settings, **helper.extra_linker_args())
    pred = linker.predict()
    out = pred.as_pandas_dataframe().sort_values(by=["unique_id_l", "unique_id_r"])
    # Check individual IDs are assigned to the correct gamma values
    # Dict key: {gamma_value: tuple of ID pairs}
    size_gamma_lookup = {
        3: [(1, 2)],
        2: [(1, 3), (1, 5), (2, 3), (2, 5), (4, 5)],
        1: [(1, 4), (2, 4), (3, 4), (3, 5)],
    }
    for gamma, id_pairs in size_gamma_lookup.items():
        for left, right in id_pairs:
            row = out.loc[(out.unique_id_l == left) & (out.unique_id_r == right)]
            assert row["gamma_full_name"].values[0] == gamma