code: public void decompose(CharSequence s, int src, int limit, StringBuilder dest,
                     int destLengthEstimate) {
          if(destLengthEstimate<0) {
              destLengthEstimate=limit-src;
          }
          dest.setLength(0);
          ReorderingBuffer buffer=new ReorderingBuffer(this, dest, destLengthEstimate);
          decompose(s, src, limit, buffer);
      }
docs: Decomposes s[src, limit[ and writes the result to dest.
  limit can be NULL if src is NUL-terminated.
  destLengthEstimate is the initial dest buffer capacity and can be -1.