docs: private ArrayList<ReadableLogRecord> readRecords() throws InternalLogException
      {
          if (tc.isEntryEnabled())
              Tr.entry(tc, "readRecords", this);
  
          // Check that the file is actually open
          if (_activeFile == null)
          {
              if (tc.isEntryEnabled())
                  Tr.exit(tc, "readRecords", "InternalLogException");
              throw new InternalLogException(null);
          }
  
          ArrayList<ReadableLogRecord> records = null;
  
          // Retrieve the first record sequence number from the header. If this file has
          // been freshly created (ie cold start) then this will be zero, the sequence
          // number for the first ever record. Otherwise, the sequence number will be
          // been retrieved from the active file.
          _recordSequenceNumber = _activeFile.logFileHeader().firstRecordSequenceNumber();
  
          // Keep extracting log records until no more are found.
          ReadableLogRecord readableLogRecord = _activeFile.getReadableLogRecord(_recordSequenceNumber);
  
          // If there is a "first" record then create the array that will be used to store these
          // records as they are retrieved.
          if (readableLogRecord != null)
          {
              records = new ArrayList<ReadableLogRecord>();
          }
  
          while (readableLogRecord != null)
          {
              records.add(readableLogRecord);
  
              // 776666/PI69183 - may need to adjust sequence number if byte-by-byte scanning finds more records.
              long realSequenceNumber = readableLogRecord.getSequenceNumber();
              if (_recordSequenceNumber != realSequenceNumber)
              {
                  if (realSequenceNumber > _recordSequenceNumber)
                  {
                      if (tc.isDebugEnabled())
                          Tr.debug(tc, "byte-by-byte scanning found records. Adjusting record sequence number:" + _recordSequenceNumber + " to:" + realSequenceNumber);
                      _recordSequenceNumber = realSequenceNumber;
                  }
                  else
                  {
                      // This SHOULD and I think CAN'T happen
                      if (tc.isDebugEnabled())
                          Tr.debug(tc, "ERROR byte-by-byte scanning found records. Expected to find record sequence number:" + _recordSequenceNumber + " but found :"
                                       + realSequenceNumber);
                      FFDCFilter.processException(new Exception(), "com.ibm.ws.recoverylog.spi.LogHandle.readRecords", "685", this,
                                                  new Object[] { String.valueOf(_recordSequenceNumber), String.valueOf(realSequenceNumber) });
                  }
              }
  
              _recordSequenceNumber++;
              readableLogRecord = _activeFile.getReadableLogRecord(_recordSequenceNumber);
          }
  
          if (tc.isDebugEnabled())
              Tr.debug(tc, "Next record sequence number is " + _recordSequenceNumber);
  
          if (tc.isEntryEnabled())
              Tr.exit(tc, "readRecords", records);
          return records;
      }