code: private final boolean checkNullNextTrailIndex()
      {
          if (m_nextIndex_ <= 0) {
              m_nextCodepoint_ += TRAIL_SURROGATE_COUNT_ - 1;
              int nextLead  = UTF16.getLeadSurrogate(m_nextCodepoint_);
              int leadBlock =
                     m_trie_.m_index_[nextLead >> Trie.INDEX_STAGE_1_SHIFT_] <<
                                                     Trie.INDEX_STAGE_2_SHIFT_;
              if (m_trie_.m_dataManipulate_ == null) {
                  throw new NullPointerException(
                              "The field DataManipulate in this Trie is null");
              }
              m_nextIndex_ = m_trie_.m_dataManipulate_.getFoldingOffset(
                                 m_trie_.getValue(leadBlock +
                                     (nextLead & Trie.INDEX_STAGE_3_MASK_)));
              m_nextIndex_ --;
              m_nextBlockIndex_ =  DATA_BLOCK_LENGTH_;
              return true;
          }
          return false;
      }
docs: Checks if we are beginning at the start of a initial block.
  If we are then the rest of the codepoints in this initial block
  has the same values.
  We increment m_nextCodepoint_ and relevant data members if so.
  This is used only in for the supplementary codepoints because
  the offset to the trail indexes could be 0.
  @return true if we are at the start of a initial block.