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");
 }