def METHOD_NAME(self):
    item_pool = {}
    for room in self.__rooms:
        for location in room.locations:
            print(room, location.METHOD_NAME(), location.__class__.__name__)
            for k, v in location.METHOD_NAME().items():
                item_pool[k] = item_pool.get(k, 0) + v
    unmapped_count = item_pool.get(None, 0)
    del item_pool[None]
    for item in PRIMARY_ITEMS:
        if item not in item_pool:
            item_pool[item] = 1
            unmapped_count -= 1
    while item_pool[POWER_BRACELET] < 2:
        item_pool[POWER_BRACELET] = item_pool.get(POWER_BRACELET, 0) + 1
        unmapped_count -= 1
    while item_pool[SHIELD] < 2:
        item_pool[SHIELD] = item_pool.get(SHIELD, 0) + 1
        unmapped_count -= 1
    assert unmapped_count >= 0
    for item in SECONDARY_ITEMS:
        if unmapped_count > 0:
            item_pool[item] = item_pool.get(item, 0) + 1
            unmapped_count -= 1
    # Add a heart container per 10 items "spots" left.
    heart_piece_count = unmapped_count // 10
    unmapped_count -= heart_piece_count * 4
    item_pool[HEART_PIECE] = item_pool.get(HEART_PIECE, 0) + heart_piece_count * 4
    # Add the rest as rupees
    item_pool[RUPEES_50] = item_pool.get(RUPEES_50, 0) + unmapped_count
    return item_pool