docs: @Override
  	public void putNormalizedKey(BigDecimal record, MemorySegment target, int offset, int len) {
  		final long signum = record.signum();
  
  		// order of magnitude
  		// smallest:
  		// scale = Integer.MAX, precision = 1 => SMALLEST_MAGNITUDE
  		// largest:
  		// scale = Integer.MIN, precision = Integer.MAX => LARGEST_MAGNITUDE
  		final long mag = ((long) record.scale()) - ((long) record.precision()) + 1;
  
  		// normalize value range: from 0 to (SMALLEST_MAGNITUDE + -1*LARGEST_MAGNITUDE)
  		final long normMag = -1L * LARGEST_MAGNITUDE + mag;
  
  		// normalize value range dependent on sign:
  		// 0 to (SMALLEST_MAGNITUDE + -1*LARGEST_MAGNITUDE)
  		// OR (SMALLEST_MAGNITUDE + -1*LARGEST_MAGNITUDE) to 0
  		// --> uses at most 33 bit (5 least-significant bytes)
  		long signNormMag = signum < 0 ? normMag : (SMALLEST_MAGNITUDE + -1L * LARGEST_MAGNITUDE - normMag);
  
  		// zero has no magnitude
  		// set 34th bit to flag zero
  		if (signum == 0) {
  			signNormMag = 0L;
  			signNormMag |= (1L << 34);
  		}
  		// set 35th bit to flag positive sign
  		else if (signum > 0) {
  			signNormMag |= (1L << 35);
  		}
  
  		// add 5 least-significant bytes that contain value to target
  		for (int i = 0; i < 5 && len > 0; i++, len--) {
  			final byte b = (byte) (signNormMag >>> (8 * (4 - i)));
  			target.put(offset++, b);
  		}
  	}