protected void shiftEnd(int newSize){
  int oldSize=getArrayLength();
  int oldGapEnd=g1;
  int upperSize=oldSize - oldGapEnd;
  int arrayLength=getNewArraySize(newSize);
  int newGapEnd=arrayLength - upperSize;
  resize(arrayLength);
  g1=newGapEnd;
  if (upperSize != 0) {
    System.arraycopy(array,oldGapEnd,array,newGapEnd,upperSize);
  }
}

protected void shiftEnd ( int newSize ) { int oldSize = getArrayLength ( ) ; int oldGapEnd = g1 ; int upperSize = oldSize - oldGapEnd ; int arrayLength = getNewArraySize ( newSize ) ; int newGapEnd = arrayLength - upperSize ; resize ( arrayLength ) ; g1 = newGapEnd ; if ( upperSize != 0 ) { System . arraycopy ( array , oldGapEnd , array , newGapEnd , upperSize ) ; } }
make the gap bigger , moving any necessary data and updating the appropriate marks
