code: @Override
      protected final int getSurrogateOffset(char lead, char trail)
      {
          if (m_dataManipulate_ == null) {
              throw new NullPointerException(
                               "The field DataManipulate in this Trie is null");
          }
  
          // get fold position for the next trail surrogate
          int offset = m_dataManipulate_.getFoldingOffset(getLeadValue(lead));
  
          // get the real data from the folded lead/trail units
          if (offset > 0) {
              return getRawOffset(offset, (char)(trail & SURROGATE_MASK_));
          }
  
          // return -1 if there is an error, in this case we return the default
          // value: m_initialValue_
          return -1;
      }
docs: Gets the offset to the data which the surrogate pair points to.
  @param lead lead surrogate
  @param trail trailing surrogate
  @return offset to data