private void moveBagsAsideForTray(BagProperties bagProperties)
    {
        float trayDropPointX   = Game.instance.getTrayDropPosition().x;
        float trayPlacingWidth = bagProperties.placingCube.transform.localScale.x;
        float trayRight        = trayDropPointX + (trayPlacingWidth / 2f) * 1.5f;

        List <BagProperties> bagsToMove = activeBags.FindAll(bag => {
            float bagLeft = bag.transform.position.x - bag.placingCube.transform.localScale.x / 2f;
            return(bagLeft <= trayRight);
        });


        List <GameObject> bagsToMoveObjects = new List <GameObject>();
        BagProperties     frontmostBag      = null;

        foreach (BagProperties bagToMove in bagsToMove)
        {
            if (frontmostBag == null || frontmostBag.transform.position.x < bagToMove.transform.position.x)
            {
                frontmostBag = bagToMove;
            }
            bagsToMoveObjects.Add(bagToMove.gameObject);
        }


        if (frontmostBag != null)
        {
            float frontMostBagLeft = frontmostBag.transform.position.x - frontmostBag.placingCube.transform.localScale.x / 2f;
            float movementNeeded   = (frontMostBagLeft - (trayDropPointX - trayPlacingWidth / 2f)) + frontmostBag.placingCube.transform.localScale.x * 1.35f;

            string  groupMovementId = "move_aside_for_tray_" + BagContentProperties.manualInspectTrayCounter;
            Vector3 moveVector      = new Vector3(-movementNeeded, 0, 0);
            Misc.AnimateRelativeMovement(groupMovementId, bagsToMoveObjects, moveVector, 0.7f, true);
            StartCoroutine(showItemsAfterDelay(bagsToMoveObjects, false, 0.7f));
        }
    }