// Inserts rows range into the existing sheet
        internal static void InsertRowsSync(this SheetsService sheetsService, string spreadsheetId, string sheetTitleId, int?sheetId, int columnCount, int toBeInsertedTopRowIndex, int toBeInsertedRowCount, IList <IList <object> > newRowsData)
        {
            // Wait for google apis request quota availability.
            SessionRequestsLimiter.Instance.Wait();

            // Obtain appropriate insert row batch request.
            SpreadsheetsResource.BatchUpdateRequest insertRowsRequest = GoogleServicesExtensionsRequestsFactory.GetInsertRowsRequest(sheetsService, spreadsheetId, sheetId, toBeInsertedTopRowIndex, toBeInsertedRowCount);

            // Execute insert sheet rows request in safe synchronous manner.
            RequestsExecutor.SafeExecuteSync <BatchUpdateSpreadsheetResponse>(insertRowsRequest);

            // If new rows data haven't been provided
            if (!(newRowsData is null))
            {
                // Obtain new rows range string.
                string newRowsRangeString = RangeTranslator.GetRangeString(sheetTitleId, 0, toBeInsertedTopRowIndex, columnCount, toBeInsertedRowCount);

                // Fills inserted rows with provided data.
                sheetsService.UpdateRangeDataSync(spreadsheetId, newRowsRangeString, newRowsData);
            }
        }