code: public final boolean getSet(char src[], int srcStart) {
          // leave most argument checking up to Java exceptions
          array=null;
          arrayOffset=bmpLength=length=0;
  
          length=src[srcStart++];
          
          if ((length&0x8000) != 0) {
              /* there are supplementary values */
              length&=0x7fff;
              if(src.length<(srcStart+1+length)) {
                  length=0;
                  throw new IndexOutOfBoundsException();
              }
              bmpLength=src[srcStart++];
          } else {
              /* only BMP values */
              if(src.length<(srcStart+length)) {
                  length=0;
                  throw new IndexOutOfBoundsException();
              }
              bmpLength=length;
          }
          array = new char[length];
          System.arraycopy(src,srcStart,array,0,length);
          //arrayOffset=srcStart;
          return true;
      }
docs: Fill in the given serialized set object.
  @param src pointer to start of array
  @param srcStart pointer to start of serialized data (length value)
  @return true if the given array is valid, otherwise false