code: public final void append(char value)
    {
      
      char[] chunk;
  
      // We may have preallocated chunks. If so, all but last should
      // be at full size.
  
      if (m_firstFree < m_chunkSize)  // Simplified test single-character-fits
        chunk = m_array[m_lastChunk];
      else
      {
  
        // Extend array?
        int i = m_array.length;
  
        if (m_lastChunk + 1 == i)
        {
          char[][] newarray = new char[i + 16][];
  
          System.arraycopy(m_array, 0, newarray, 0, i);
  
          m_array = newarray;
        }
  
        // Advance one chunk
        chunk = m_array[++m_lastChunk];
  
        if (chunk == null)
        {
  
          // Hierarchical encapsulation
          if (m_lastChunk == 1 << m_rebundleBits
                  && m_chunkBits < m_maxChunkBits)
          {
  
            // Should do all the work of both encapsulating
            // existing data and establishing new sizes/offsets
            m_innerFSB = new FastStringBuffer(this);
          }
  
          // Add a chunk.
          chunk = m_array[m_lastChunk] = new char[m_chunkSize];
        }
  
        m_firstFree = 0;
      }
  
      // Space exists in the chunk. Append the character.
      chunk[m_firstFree++] = value;
    }
docs: Append a single character onto the FastStringBuffer, growing the
  storage if necessary.
  <p>
  NOTE THAT after calling append(), previously obtained
  references to m_array[][] may no longer be valid....
  though in fact they should be in this instance.
  
  @param value character to be appended.