       return dataSource!.itemForRowsView(rowsView: self, atCoordinate: coordinate)
     }
 
-    let wasEmptyBeforeInsertionsHappened = (rowToItems[.top]!.count == 0) && (rowToItems[.bottom]!.count == 0)
-
-    let hadBottomRowBeforeInsertionsHappened = rowToItems[.bottom]!.count > 0
+    let coordinatesZippedWithItemsSortedByAscendingIndices = zip(coordinates, items).sorted { (tupleA, tupleB) -> Bool in
+      return tupleA.0.index < tupleB.0.index
+    }
 
     // Элементы могут быть вставлены либо в верхний, либо в нижний ряд.
-    for (coordinate, item) in zip(coordinates, items)
+    for (coordinate, item) in coordinatesZippedWithItemsSortedByAscendingIndices
     {
       rowToItems[coordinate.row]!.insert(item, at: coordinate.index)
     }

        knownCoordinates.append(coordinate)
      }
    }
    */

    // * * *.


  }

  // Вставляет элементы по данным координатам.
  // Печаль: `coordinates` нельзя сделать множеством, потому что кортежи не могут конформиться к протоколам, в частности, к Hashable.
  open func insertItems(atCoordinates coordinates: [Coordinate], animated: Bool)
  {
    // Проверка на уникальность переданных координат.
    var knownCoordinates: [Coordinate] = []

