code: private int initializePatternPCETable() {
          long[] pcetable = new long[INITIAL_ARRAY_SIZE_];
          int pcetablesize = pcetable.length;
          int patternlength = pattern_.text_.length();
          CollationElementIterator coleiter = utilIter_;
  
          if (coleiter == null) {
              coleiter = new CollationElementIterator(pattern_.text_, collator_);
              utilIter_ = coleiter;
          } else {
              coleiter.setText(pattern_.text_);
          }
  
          int offset = 0;
          int result = 0;
          long pce;
  
          CollationPCE iter = new CollationPCE(coleiter);
  
          // ** Should processed CEs be signed or unsigned?
          // ** (the rest of the code in this file seems to play fast-and-loose with
          // ** whether a CE is signed or unsigned. For example, look at routine above this one.)
          while ((pce = iter.nextProcessed(null)) != CollationPCE.PROCESSED_NULLORDER) {
              long[] temp = addToLongArray(pcetable, offset, pcetablesize, pce, patternlength - coleiter.getOffset() + 1);
              offset++;
              pcetable = temp;
          }
  
          pcetable[offset] = 0;
          pattern_.PCE_ = pcetable;
          pattern_.PCELength_ = offset;
  
          return result;
      }
docs: Initializing the pce table for a pattern.
  Stores non-ignorable collation keys.
  Table size will be estimated by the size of the pattern text. Table
  expansion will be perform as we go along. Adding 1 to ensure that the table
  size definitely increases.
  @return total number of expansions