public void OnStoreThisAttempt(EntityUid uid, FoldableComponent comp, StoreMobInItemContainerAttemptEvent args)
        {
            args.Handled = true;

            if (comp.IsFolded)
            {
                args.Cancel();
            }
        }
    public bool CanFit(EntityUid toInsert, EntityUid container, EntityWhitelist?whitelist)
    {
        // conditions are complicated because of pizzabox-related issues, so follow this guide
        // 0. Accomplish your goals at all costs.
        // 1. AddToContents can block anything
        // 2. maximum item count can block anything
        // 3. ghosts can NEVER be eaten
        // 4. items can always be eaten unless a previous law prevents it
        // 5. if this is NOT AN ITEM, then mobs can always be eaten unless a previous
        // law prevents it
        // 6. if this is an item, then mobs must only be eaten if some other component prevents
        // pick-up interactions while a mob is inside (e.g. foldable)
        var attemptEvent = new InsertIntoEntityStorageAttemptEvent();

        RaiseLocalEvent(toInsert, attemptEvent);
        if (attemptEvent.Cancelled)
        {
            return(false);
        }

        var targetIsMob   = HasComp <SharedBodyComponent>(toInsert);
        var storageIsItem = HasComp <ItemComponent>(container);

        var allowedToEat = whitelist == null
            ? HasComp <ItemComponent>(toInsert)
            : whitelist.IsValid(toInsert);

        // BEFORE REPLACING THIS WITH, I.E. A PROPERTY:
        // Make absolutely 100% sure you have worked out how to stop people ending up in backpacks.
        // Seriously, it is insanely hacky and weird to get someone out of a backpack once they end up in there.
        // And to be clear, they should NOT be in there.
        // For the record, what you need to do is empty the backpack onto a PlacableSurface (table, rack)
        if (targetIsMob)
        {
            if (!storageIsItem)
            {
                allowedToEat = true;
            }
            else
            {
                var storeEv = new StoreMobInItemContainerAttemptEvent();
                RaiseLocalEvent(container, storeEv);
                allowedToEat = storeEv.Handled && !storeEv.Cancelled;
            }
        }

        return(allowedToEat);
    }