code: public static String valueOf(char source[], int start, int limit, int offset16) {
          switch (bounds(source, start, limit, offset16)) {
          case LEAD_SURROGATE_BOUNDARY:
              return new String(source, start + offset16, 2);
          case TRAIL_SURROGATE_BOUNDARY:
              return new String(source, start + offset16 - 1, 2);
          }
          return new String(source, start + offset16, 1);
      }
docs: Convenience method. Returns a one or two char string containing the UTF-32 value in UTF16
  format. If offset16 indexes a surrogate character, the whole supplementary codepoint will be
  returned, except when either the leading or trailing surrogate character lies out of the
  specified subarray. In the latter case, only the surrogate character within bounds will be
  returned. If a validity check is required, use
  {@link android.icu.lang.UCharacter#isLegal(int)} on the codepoint at
  offset16 before calling. The result returned will be a newly created String containing the
  relevant characters.
  
  @param source The input char array.
  @param start Start index of the subarray
  @param limit End index of the subarray
  @param offset16 The UTF16 index to the codepoint in source relative to start
  @return string value of char32 in UTF16 format