docs: public LogCursor data() throws InternalLogException
    {
      if (tc.isEntryEnabled()) Tr.entry(tc, "data", this);
  
      // If the parent recovery log instance has experienced a serious internal error then prevent
      // this operation from executing.
      if (_recLog.failed())
      {
        if (tc.isEntryEnabled()) Tr.exit(tc, "data",this);
        throw new InternalLogException(null);
      }
  
      // Trace out the number of written and unwritten data blocks held by this SQLRecoverableUnitSectionImpl
      if (tc.isEventEnabled())
      {
          int writtenDataBlocks = 0;
          int unwrittenDataBlocks = 0;
  
          if (_writtenData!=null)
          {
            writtenDataBlocks = _writtenData.size();
          }
          if (_unwrittenData!=null)
          {
            unwrittenDataBlocks = _unwrittenData.size();
          }
  
          Tr.event(tc,"#writtenDataBlocks = " + writtenDataBlocks + " #unwrittenDataBlocks = " + unwrittenDataBlocks);
      }
  
      LogCursor cursor = null;
      
      if (_singleData)
      {
          // There is only a single data item. The LogCursor provides an optomized constructor
          // for this case.
          if (_writtenData.size() > 0)
          {
              cursor = new LogCursorImpl(null, _writtenData.get(0));
          }
          else
          {
              cursor = new LogCursorImpl(null, _unwrittenData.get(0));    
          }
      }
      else
      {
        // There are potentially multiple data items. Use the standard LogCursor constructor.
        cursor = new LogCursorImpl(null,_writtenData,_unwrittenData,false,null);
      }
  
      if (tc.isEntryEnabled()) Tr.exit(tc, "data", new Integer(cursor.initialSize()));
  
      return cursor;
    }