code: private final void setLength(int l, FastStringBuffer rootFSB)
    {
  
      m_lastChunk = l >>> m_chunkBits;
  
      if (m_lastChunk == 0 && m_innerFSB != null)
      {
        m_innerFSB.setLength(l, rootFSB);
      }
      else
      {
  
        // Undo encapsulation -- pop the innerFSB data back up to root.
        // Inefficient, but attempts to keep the code simple.
        rootFSB.m_chunkBits = m_chunkBits;
        rootFSB.m_maxChunkBits = m_maxChunkBits;
        rootFSB.m_rebundleBits = m_rebundleBits;
        rootFSB.m_chunkSize = m_chunkSize;
        rootFSB.m_chunkMask = m_chunkMask;
        rootFSB.m_array = m_array;
        rootFSB.m_innerFSB = m_innerFSB;
        rootFSB.m_lastChunk = m_lastChunk;
  
        // Finally, truncate this sucker.
        rootFSB.m_firstFree = l & m_chunkMask;
      }
    }
docs: Subroutine for the public setLength() method. Deals with the fact
  that truncation may require restoring one of the innerFSBs
  
  NEEDSDOC @param l
  NEEDSDOC @param rootFSB