int newElement() {
		int element = m_firstFree;
		if (element == -1) {
			if (m_last == m_capacity) {
				long newcap = m_capacity != 0 ? (((long) m_capacity + 1) * 3 / 2)
						: (long) 1;
				if (newcap > Integer.MAX_VALUE)
					newcap = Integer.MAX_VALUE;// cannot grow past 2gb elements
												// presently

				if (newcap == m_capacity)
					throw new IndexOutOfBoundsException();

				grow_(newcap);
			}

			element = ((m_last / m_blockSize) << m_blockPower)
					+ (m_last % m_blockSize) * m_realStride;
			m_last++;
		} else {
			m_firstFree = m_buffer[element >> m_blockPower][element
					& m_blockMask];
		}

		m_size++;
		int ar[] = m_buffer[element >> m_blockPower];
		int ind = element & m_blockMask;
		for (int i = 0; i < m_stride; i++) {
			ar[ind + i] = -1;
		}
		return element;
	}
int newElement ( ) { int element = m_firstFree ; if ( element == - 1 ) { if ( m_last == m_capacity ) { long newcap = m_capacity != 0 ? ( ( ( long ) m_capacity + 1 ) * 3 / 2 ) : ( long ) 1 ; if ( newcap > Integer . MAX_VALUE ) newcap = Integer . MAX_VALUE ; if ( newcap == m_capacity ) throw new IndexOutOfBoundsException ( ) ; grow_ ( newcap ) ; } element = ( ( m_last / m_blockSize ) << m_blockPower ) + ( m_last % m_blockSize ) * m_realStride ; m_last ++ ; } else { m_firstFree = m_buffer [ element > > m_blockPower ] [ element & m_blockMask ] ; } m_size ++ ; int ar [ ] = m_buffer [ element > > m_blockPower ] ; int ind = element & m_blockMask ; for ( int i = 0 ; i < m_stride ; i ++ ) { ar [ ind + i ] = - 1 ; } return element ; }
All fields are initialized to -1.