code: public final Timestamp adjustMillis(long amount) {
          if (amount == 0) return this;
          Timestamp ts = addMillisForPrecision(amount, _precision, false);
          //ts._precision = _precision;
          ts.clearUnusedPrecision();
          if (ts._precision.includes(Precision.SECOND)) {
              // Maintain the same amount of fractional precision.
              if (_fraction == null) {
                  ts._fraction = null;
              } else {
                  // Truncate the result only if it exceeds the fractional precision of the original.
                  if (ts._fraction.scale() > _fraction.scale()) {
                      ts._fraction = ts._fraction.setScale(_fraction.scale(), RoundingMode.FLOOR);
                  }
              }
          }
          return ts;
      }
docs: Returns a timestamp relative to this one by the given number of
  milliseconds.
  <p>
  This method always returns a Timestamp with the same precision as
  the original. After performing the arithmetic, the resulting Timestamp's
  seconds value will be truncated to the same fractional precision as the
  original. For example, adjusting {@code 2012-04-01T00:00:00Z} by one
  millisecond results in {@code 2012-04-01T00:00:00Z}; adjusting
  {@code 2012-04-01T00:00:00.0010Z} by -1 millisecond results in
  {@code 2012-04-01T00:00:00.0000Z}. To extend the precision when the
  original Timestamp has coarser than SECOND precision and to avoid
  truncation of the seconds value, use {@link #addSecond(int)}.
  
  @param amount a number of milliseconds.