code: public boolean getCanonStartSet(int c, UnicodeSet set) {
          int canonValue=canonIterData.get(c)&~CANON_NOT_SEGMENT_STARTER;
          if(canonValue==0) {
              return false;
          }
          set.clear();
          int value=canonValue&CANON_VALUE_MASK;
          if((canonValue&CANON_HAS_SET)!=0) {
              set.addAll(canonStartSets.get(value));
          } else if(value!=0) {
              set.add(value);
          }
          if((canonValue&CANON_HAS_COMPOSITIONS)!=0) {
              int norm16=getNorm16(c);
              if(norm16==JAMO_L) {
                  int syllable=Hangul.HANGUL_BASE+(c-Hangul.JAMO_L_BASE)*Hangul.JAMO_VT_COUNT;
                  set.add(syllable, syllable+Hangul.JAMO_VT_COUNT-1);
              } else {
                  addComposites(getCompositionsList(norm16), set);
              }
          }
          return true;
      }
docs: Returns true if there are characters whose decomposition starts with c.
  If so, then the set is cleared and then filled with those characters.
  <b>{@link #ensureCanonIterData()} must have been called before this method,
  or else this method will crash.</b>
  @param c A Unicode code point.
  @param set A UnicodeSet to receive the characters whose decompositions
  start with c, if there are any.
  @return true if there are characters whose decomposition starts with c.