question: private final void growBuffer ( ) { final int columns = mColumns ; int [ ] newvalues = ArrayUtils . newUnpaddedIntArray ( GrowingArrayUtils . growSize ( size ( ) ) * columns ) ; int newsize = newvalues . length / columns ; final int [ ] valuegap = mValueGap ; final int rowgapstart = mRowGapStart ; int after = mRows - ( rowgapstart + mRowGapLength ) ; if ( mValues != null ) { System . arraycopy ( mValues , 0 , newvalues , 0 , columns * rowgapstart ) ; System . arraycopy ( mValues , ( mRows - after ) * columns , newvalues , ( newsize - after ) * columns , after * columns ) ; } for ( int i = 0 ; i < columns ; i ++ ) { if ( valuegap [ i ] >= rowgapstart ) { valuegap [ i ] += newsize - mRows ; if ( valuegap [ i ] < rowgapstart ) { valuegap [ i ] = rowgapstart ; } } } mRowGapLength += newsize - mRows ; mRows = newsize ; mValues = newvalues ; }
target:  Grows the value and gap arrays to be large enough to store at least one more than the current number of rows.