def METHOD_NAME(dest_dir: str) -> None:
    #
    # Load inputs.
    #
    # Load attainable yields data from Mueller et al. (2012), and read its main table.
    ds_mueller: Dataset = paths.load_dependency("mueller_et_al_2012")
    tb_mueller = ds_mueller["mueller_et_al_2012"].reset_index()
    # Load long-term crop yields dataset and read its main table.
    ds_yields: Dataset = paths.load_dependency("long_term_crop_yields")
    tb_yields = ds_yields["long_term_crop_yields"].reset_index()
    #
    # Process data.
    #
    # Rename columns from the long-term crop yields dataset, to coincide with the names of Mueller et al. (2012).
    tb_yields = tb_yields.rename(columns=COLUMNS, errors="raise")
    # Combine both tables.
    tb = pd.merge(tb_yields, tb_mueller.drop(columns=["year"]), on=["country"], how="inner")
    # Set an appropriate index and sort conveniently.
    tb = tb.set_index(["country", "year"], verify_integrity=True).sort_index()
    # Add the yield gap (difference between maximum attainable yields minus actual yield).
    for item in [
        column.replace("_attainable_yield", "") for column in tb.columns if column.endswith("_attainable_yield")
    ]:
        # Clip the series at zero (negative values mean that the yield has been attained).
        tb[f"{item}_yield_gap"] = pd.Series(tb[f"{item}_attainable_yield"] - tb[f"{item}_yield"]).clip(0)
    # Update table and variable metadata.
    tb = add_table_and_variable_metadata(tb=tb)
    #
    # Save outputs.
    #
    # Create a new garden dataset with the same metadata as the meadow dataset.
    ds_garden = create_dataset(dest_dir, tables=[tb])
    # Combine sources and licenses.
    ds_garden.metadata.sources = ds_mueller.metadata.sources + ds_yields.metadata.sources
    ds_garden.metadata.licenses = ds_mueller.metadata.licenses + ds_yields.metadata.licenses
    # Save changes in the new garden dataset.
    ds_garden.save()