def METHOD_NAME(cls, years, results):
    periods = {}
    # Populate periods with v1 data
    populate_periods(
        periods,
        group_by_year(
            results["repairs_maintenance_v1"],
            "repairs_maintenance",
        ),
        ("repairs_maintenance", "v1"),
    )
    populate_periods(
        periods,
        group_by_year(results["property_plant_equipment_v1"]),
        ("property_plant_equipment", "v1"),
    )
    populate_periods(
        periods,
        group_by_year(results["investment_property_v1"]),
        ("investment_property", "v1"),
    )
    # Populate periods with v2 data
    populate_periods(
        periods,
        group_by_year(results["repairs_maintenance_v2"]),
        ("repairs_maintenance", "v2"),
    )
    populate_periods(
        periods,
        group_by_year(results["property_plant_equipment_v2"]),
        ("property_plant_equipment", "v2"),
    )
    populate_periods(
        periods,
        group_by_year(results["investment_property_v2"]),
        ("investment_property", "v2"),
    )
    # Filter out periods that don't have all the required data
    periods = filter_for_all_keys_versioned(periods, [
        "repairs_maintenance",
        "property_plant_equipment",
        "investment_property",
    ])
    # 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,
        )
    )