public final void addPropertyStarts(UnicodeSet set) {
        int i, length;
        int c, start, limit;

        byte prev, jg;

        /* add the start code point of each same-value range of the trie */
        Iterator<Trie2.Range> trieIterator=trie.iterator();
        Trie2.Range range;
        while(trieIterator.hasNext() && !(range=trieIterator.next()).leadSurrogate) {
            set.add(range.startCodePoint);
        }

        /* add the code points from the bidi mirroring table */
        length=indexes[IX_MIRROR_LENGTH];
        for(i=0; i<length; ++i) {
            c=getMirrorCodePoint(mirrors[i]);
            set.add(c, c+1);
        }

        /* add the code points from the Joining_Group array where the value changes */
        start=indexes[IX_JG_START];
        limit=indexes[IX_JG_LIMIT];
        byte[] jga=jgArray;
        for(;;) {
            length=limit-start;
            prev=0;
            for(i=0; i<length; ++i) {
                jg=jga[i];
                if(jg!=prev) {
                    set.add(start);
                    prev=jg;
                }
                ++start;
            }
            if(prev!=0) {
                /* add the limit code point if the last value was not 0 (it is now start==limit) */
                set.add(limit);
            }
            if(limit==indexes[IX_JG_LIMIT]) {
                /* switch to the second Joining_Group range */
                start=indexes[IX_JG_START2];
                limit=indexes[IX_JG_LIMIT2];
                jga=jgArray2;
            } else {
                break;
            }
        }

        /* add code points with hardcoded properties, plus the ones following them */

        /* (none right now) */
    }
public final void addPropertyStarts ( UnicodeSet set ) { int i , length ; int c , start , limit ; byte prev , jg ; Iterator < Trie2 . Range > trieIterator = trie . iterator ( ) ; Trie2 . Range range ; while ( trieIterator . hasNext ( ) && ! ( range = trieIterator . next ( ) ) . leadSurrogate ) { set . add ( range . startCodePoint ) ; } length = indexes [ IX_MIRROR_LENGTH ] ; for ( i = 0 ; i < length ; ++ i ) { c = getMirrorCodePoint ( mirrors [ i ] ) ; set . add ( c , c + 1 ) ; } start = indexes [ IX_JG_START ] ; limit = indexes [ IX_JG_LIMIT ] ; byte [ ] jga = jgArray ; for ( ; ; ) { length = limit - start ; prev = 0 ; for ( i = 0 ; i < length ; ++ i ) { jg = jga [ i ] ; if ( jg != prev ) { set . add ( start ) ; prev = jg ; } ++ start ; } if ( prev != 0 ) { set . add ( limit ) ; } if ( limit == indexes [ IX_JG_LIMIT ] ) { start = indexes [ IX_JG_START2 ] ; limit = indexes [ IX_JG_LIMIT2 ] ; jga = jgArray2 ; } else { break ; } } }
set of property starts for UnicodeSet ------------------------------- ***