public void RemoveMeleeOrbs(GameSave saveFile, object inventory) { var reflected = inventory.AsDynamic(); var orbs = ((IEnumerable <InventoryItem>)reflected._items).Cast <InventoryOrb>(); var orbsToRemove = orbs .Where(o => !saveFile.HasMeleeOrb(o.OrbType)) .Select(o => o.Name) .ToList(); var entries = (IList)reflected.Entries; var entryMapping = (IList <int>)reflected.KeyToItemLookup; for (var i = entries.Count - 1; i >= 0; i--) { var entry = entries[i]; if (orbsToRemove.Contains(entry.AsDynamic().Text)) { entries.RemoveAt(i); entryMapping.RemoveAt(i); } } }