code: protected byte[][] determineNewLargestElements(int numberOfPartitions) throws IOException {
          int elementsPerPart = determineElementsPerPart(numberOfPartitions);
          byte[][] keysToInsert = new byte[numberOfPartitions][];
          long offset;
          for (int i = 0; i < numberOfPartitions; i++) {
              if (i == numberOfPartitions - 1) {
                  // Handling of last partition
                  offset = sourceFile.getFilledUpFromContentStart() - sourceFile.getElementSize();
              } else {
                  // Handling of all other partitions
                  offset = ((i + 1) * elementsPerPart - 1) * sourceFile.getElementSize();
              }
  
              ByteBuffer keyBuffer = ByteBuffer.allocate(gp.getKeySize());
              sourceFile.read(offset, keyBuffer);
              keyBuffer.position(0);
  
              keysToInsert[i] = keyBuffer.array();
          }
          return keysToInsert;
      }
docs: Determines the largest key for each new bucket. The values are stored in <code>newLargestKeys</code>
  
  @throws IOException