code: public void FillBitArray() throws IOException {
          //get the bit array index
          long nBitArrayIndex = m_nCurrentBitIndex >> 5;
          long al[];
          int j;
  
          //move the remaining data to the front
          System.arraycopy(al = m_pBitArray, j = (int) nBitArrayIndex, al, 0, (int) (al.length - nBitArrayIndex));
  
          //read the new data
          ByteArrayReader reader = m_pReader;
          reader.reset(m_pIO, j << 2);
          long l1;
          int i = (int) ((l1 = m_nElements) - nBitArrayIndex);
          if ((long) i < l1)
              do {
                  al[i] = reader.readUnsignedInt();
                  i++;
              } while ((long) i < l1);
  
          //adjust the m_Bit pointer
          m_nCurrentBitIndex &= 31;
      }
docs: functions