def METHOD_NAME(cls, years, results):
    periods = {}
    # Populate periods with v1 data
    populate_periods(
        periods,
        group_by_year(
            results["capital_expenditure_budget_v1"],
            "total_assets",
        ),
        ("budget", "v1"),
    )
    populate_periods(
        periods,
        group_by_year(
            results["capital_expenditure_actual_v1"],
            "total_assets",
        ),
        ("actual", "v1"),
    )
    # Populate periods with v2 data
    populate_periods(
        periods,
        group_by_year(results["capital_expenditure_budget_v2"]),
        ("budget", "v2"),
    )
    populate_periods(
        periods,
        group_by_year(results["capital_expenditure_actual_v2"]),
        ("actual", "v2"),
    )
    # Filter out periods that don't have all the required data
    periods = filter_for_all_keys_versioned(periods, [
        "budget", "actual",
    ])
    # Convert periods into dictionary
    periods = dict(periods)
    # Generate data for the requested years
    return list(
        map(
            lambda year: cls.generate_data(year, periods.get(year)),
            years,
        )
    )