code: final int insertIntoBuildBuffer(BinaryRow record) throws IOException {
  		this.buildSideRecordCounter++;
  
  		if (isInMemory()) {
  			final long pointer = this.buildSideWriteBuffer.getCurrentPointer();
  			int skip = this.buildSideSerializer.serializeToPages(record, this.buildSideWriteBuffer);
  			if (isInMemory()) {
  				long ret = pointer + skip;
  				if (ret > Integer.MAX_VALUE) {
  					throw new RuntimeException("Too more data in this partition: " + ret);
  				}
  				return (int) ret;
  			} else {
  				return -1;
  			}
  		} else {
  			this.buildSideSerializer.serializeToPages(record, this.buildSideWriteBuffer);
  			return -1;
  		}
  	}
docs: Inserts the given object into the current buffer. This method returns a pointer that
  can be used to address the written record in this partition, if it is in-memory.
  The returned pointers have no expressiveness in the case where the partition is spilled.
  
  @param record The object to be written to the partition.
  @return A pointer to the object in the partition, or <code>-1</code>, if the partition is
  spilled.
  @throws IOException Thrown, when this is a spilled partition and the write failed.