docs: static public void serializeBigDecimal(BigDecimal bd, ByteBuffer buf)
      {
          if (bd == null) {
              serializeNull(buf);
              return;
          }
          int decimalScale = bd.scale();
          if (decimalScale > kDefaultScale) {
              bd = roundToScale(bd, kDefaultScale, getRoundingMode());
              decimalScale = bd.scale();
          }
          int overallPrecision = bd.precision();
          final int wholeNumberPrecision = overallPrecision - decimalScale;
          if (wholeNumberPrecision > 26) {
              throw new RuntimeException("Precision of " + bd + " to the left of the decimal point is " +
                                    wholeNumberPrecision + " and the max is 26");
          }
          final int scalingFactor = Math.max(0, kDefaultScale - decimalScale);
          BigInteger scalableBI = bd.unscaledValue();
          //* enable to debug */ System.out.println("DEBUG BigDecimal: " + bd);
          //* enable to debug */ System.out.println("DEBUG unscaled: " + scalableBI);
          scalableBI = scalableBI.multiply(scaleFactors[scalingFactor]);
          //* enable to debug */ System.out.println("DEBUG scaled to picos: " + scalableBI);
          final byte wholePicos[] = scalableBI.toByteArray();
          if (wholePicos.length > 16) {
              throw new RuntimeException("Precision of " + bd + " is > 38 digits");
          }
          boolean isNegative = (scalableBI.signum() < 0);
          buf.put(expandToLength16(wholePicos, isNegative));
      }