void UpdateSeamlessPagePositions()
        {
            if (!Application.isPlaying)
            {
                return;
            }
            if (!LoopSeamlessly)
            {
                return;
            }
            //if (NumberOfPages <= 1) return; // there's no point in adjusting page positions if we only have one page

            if (NumberOfPages <= 3)
            {
                return;
            }

            if (ShowPagePreviews)
            {
                UpdateSeamlessPagePositions_PagePreviews();
                return;
            }

            float pageSize = ScrollRect.GetPageSize();

            float totalSize = ScrollRect.GetTotalSize();
            float offset    = ScrollRect.GetOffset();

            //Debug.Log(offset + " ~~ " + pageSize);

            //Debug.Log("Distance from start " + offset + ". Distance from end " + (totalSize - offset));

            // let's give it a bit more breathing room (if we have enough pages to do so)
            if (NumberOfPages > 3)
            {
                pageSize *= 1.5f;
            }

            if (offset <= pageSize)
            {
                MoveLastPageToStart();
            }
            else if (offset >= totalSize - pageSize)
            {
                MoveFirstPageToEnd();
            }
        }