@staticmethod
def _remove_extra_routes(old, remove):
    """Remove the 2nd list of extra routes from the first.

        Since we care about the end state if an extra route to be removed
        is already missing from old, that's not an error, but accepted.
        """
    routes_dict = {}
    for r in old:
        dst = r['destination']
        nexthop = r['nexthop']
        if dst not in routes_dict:
            routes_dict[dst] = set()
        routes_dict[dst].add(nexthop)
    for r in remove:
        dst = r['destination']
        nexthop = r['nexthop']
        if dst in routes_dict:
            routes_dict[dst].discard(nexthop)
    routes_list = []
    for dst, nexthops in routes_dict.items():
        for nexthop in nexthops:
            routes_list.append({'destination': dst, 'nexthop': nexthop})
    return routes_list
