void RecalculateAvailableItemLocations()
 {
     availableItemLocations = ItemLocations
                              .Where(l => !l.IsUsed && l.Gate.CanBeOpenedWith(availableRequirements))
                              .ToList();
 }