question: private void expand ( int minNewSegmentSize ) { if ( _segments == null ) { _segments = new ArrayList < char [ ] > ( ) ; } char [ ] curr = _currentSegment ; _hasSegments = true ; _segments . add ( curr ) ; _segmentSize += curr . length ; int oldLen = curr . length ; int sizeAddition = oldLen > > 1 ; if ( sizeAddition < minNewSegmentSize ) { sizeAddition = minNewSegmentSize ; } curr = _charArray ( Math . min ( MAX_SEGMENT_LEN , oldLen + sizeAddition ) ) ; _currentSize = 0 ; _currentSegment = curr ; }
target:  Method called when current segment is full, to allocate new segment.