code: private String separated(String item) {
          StringBuilder result = new StringBuilder();
          // add a CGJ except within surrogates
          char last = item.charAt(0);
          result.append(last);
          for (int i = 1; i < item.length(); ++i) {
              char ch = item.charAt(i);
              if (!UCharacter.isHighSurrogate(last) || !UCharacter.isLowSurrogate(ch)) {
                  result.append(CGJ);
              }
              result.append(ch);
              last = ch;
          }
          return result.toString();
      }
docs: Return the string with interspersed CGJs. Input must have more than 2 codepoints.
  <p>This is used to test whether contractions sort differently from their components.