public void addElement(int value){
  int indexRelativeToCache=m_firstFree - m_buildCacheStartIndex;
  if (indexRelativeToCache >= 0 && indexRelativeToCache < m_blocksize) {
    m_buildCache[indexRelativeToCache]=value;
    ++m_firstFree;
  }
 else {
    int index=m_firstFree >>> m_SHIFT;
    int offset=m_firstFree & m_MASK;
    if (index >= m_map.length) {
      int newsize=index + m_numblocks;
      int[][] newMap=new int[newsize][];
      System.arraycopy(m_map,0,newMap,0,m_map.length);
      m_map=newMap;
    }
    int[] block=m_map[index];
    if (null == block)     block=m_map[index]=new int[m_blocksize];
    block[offset]=value;
    m_buildCache=block;
    m_buildCacheStartIndex=m_firstFree - offset;
    ++m_firstFree;
  }
}

public void addElement ( int value ) { int indexRelativeToCache = m_firstFree - m_buildCacheStartIndex ; if ( indexRelativeToCache >= 0 && indexRelativeToCache < m_blocksize ) { m_buildCache [ indexRelativeToCache ] = value ; ++ m_firstFree ; } else { int index = m_firstFree > > > m_SHIFT ; int offset = m_firstFree & m_MASK ; if ( index >= m_map . length ) { int newsize = index + m_numblocks ; int [ ] [ ] newMap = new int [ newsize ] [ ] ; System . arraycopy ( m_map , 0 , newMap , 0 , m_map . length ) ; m_map = newMap ; } int [ ] block = m_map [ index ] ; if ( null == block ) block = m_map [ index ] = new int [ m_blocksize ] ; block [ offset ] = value ; m_buildCache = block ; m_buildCacheStartIndex = m_firstFree - offset ; ++ m_firstFree ; } }
append a int onto the vector .
