//this checks for any expelled entries due to changes in item structure of any implementing device (eg. keys)
        protected void CheckExpelledEntries(Mobile from)
        {
            if (ExpelStoreEntries.Count > 0)
            {
                foreach (StoreEntry entry in ExpelStoreEntries)
                {
                    from.SendMessage("This no longer stores " + entry.Name);

                    //special handling:  if this entry is a list entry, then tell the list entry to dump its contents
                    if (entry is ListEntry)
                    {
                        ListEntry listentry = (ListEntry)entry;

                        while (listentry.ItemListEntries.Count > 0)
                        {
                            Item item = listentry.WithdrawItem(0);

                            if (item != null)
                            {
                                from.SendMessage("Adding " + entry.Name + " to your backpack.");
                                from.Backpack.DropItem(item);
                            }
                        }
                    }
                    else
                    {
                        while (entry.Amount > 0)
                        {
                            int  towithdraw = entry.Amount;
                            Item item       = entry.Withdraw(ref towithdraw, true);

                            if (item != null)
                            {
                                from.Backpack.DropItem(item);
                            }
                        }
                        from.SendMessage("Adding " + entry.Name + " to your backpack.");
                    }
                }

                //wipe the list
                _ExpelStoreEntries = new List <StoreEntry>();
            }
        }