void _groomContainers(ContainerManager contManager)
 {
     this.log("Grooming containers...");
     foreach (var fromCont in contManager.GetContainers())
     {
         int iFrom = fromCont.GetInventory().ItemCount - 1;
         while (iFrom >= 0)
         {
             MyInventoryItem item      = fromCont.GetInventory().GetItemAt(iFrom).Value;
             int             fromAff   = fromCont.GetAffinity(item);
             int             prevCount = fromCont.GetInventory().ItemCount;
             int             prevFrom  = iFrom;
             foreach (var toCont in contManager.GetSortedContainers(item))
             {
                 if (toCont.GetAffinity(item) > fromAff)
                 {
                     fromCont.GetInventory().TransferItemTo(toCont.GetInventory(), item);
                     if (prevCount != fromCont.GetInventory().ItemCount)
                     {
                         --iFrom;
                         break;
                     }
                 }
                 else
                 {
                     --iFrom;
                     break;
                 }
             }
             if (prevFrom == iFrom)
             {
                 --iFrom;
             }
         }
     }
     this.log("Done");
 }
            void groomOutputInventories(GridManager gridManager, ContainerManager contManager)
            {
                var collection = this._outputInventories[this._outputCounter];

                this.log($"Grooming containers {this._outputCounter + 1}/{this._outputInventories.Count}: {collection.Name}");

                foreach (var fromInv in collection.GetOutputInventories())
                {
                    int iFrom = fromInv.ItemCount - 1;
                    while (iFrom >= 0)
                    {
                        MyInventoryItem item      = fromInv.GetItemAt(iFrom).Value;
                        int             prevCount = fromInv.ItemCount;
                        int             prevFrom  = iFrom;
                        foreach (var toCont in contManager.GetSortedContainers(item))
                        {
                            toCont.GetInventory().TransferItemFrom(fromInv, iFrom);
                            if (prevCount != fromInv.ItemCount)
                            {
                                --iFrom;
                                break;
                            }
                        }
                        if (prevFrom == iFrom)
                        {
                            --iFrom;
                        }
                    }
                }

                ++this._outputCounter;
                if (this._outputCounter >= this._outputInventories.Count)
                {
                    this._outputCounter = 0;
                }
                this.log("Done");
            }