// A ROOT file is a suite of consecutive data records (TKey's) with
// the following format (see also the TKey class). If the key is
// located past the 32 bit file limit (> 2 GB) then some fields will
// be 8 instead of 4 bytes:
// ----------TKey---------------
//  byte 0->3           Nbytes    = Number of bytes compressed record (TKey+data)          TKey::fNbytes
//       4->5           Version   = TKey class version identifier                          TKey::fVersion
//       6->9           ObjLen    = Number of bytes of uncompressed data                   TKey::fObjLen
//      10->13          Datime    = Date and time when record was written to file          TKey::fDatime
//                       | (year-1995)<<26|month<<22|day<<17|hour<<12|minute<<6|second
//      14->15          KeyLen    = Number of bytes in key structure (TKey)                TKey::fKeyLen
//      16->17          Cycle     = Cycle of key                                           TKey::fCycle
//      18->21 [18->25] SeekKey   = Byte offset of record itself (consistency check) (64)  TKey::fSeekKey
//      22->25 [26->33] SeekPdir  = Byte offset of parent directory record (0)             TKey::fSeekPdir
//      26->26 [34->34] lname     = Number of bytes in the class name (5)                  TKey::fClassName
//      27->.. [35->..] ClassName = Object Class Name ("TFile")                            TKey::fClassName
//       0->0  lname     = Number of bytes in the object name                              TNamed::fName
//       1->..          Name      = lName bytes with the name of the object <file name>    TNamed::fName
//       0->0           lTitle    = Number of bytes in the object title                    TNamed::fTitle
//       1->..          Title     = lTitle bytes with the title of the object <file title> TNamed::fTitle
// --------DATA-----------------
//       0->0           lname     = Number of bytes in the TFile name                      TNamed::fName
//       1->.. Name      = lName bytes with the name of the TFile <file name>              TNamed::fName
//       0->0           lTitle    = Number of bytes in the TFile title                     TNamed::fTitle
//       1->..          Title     = lTitle bytes with the title of the TFile <file title>  TNamed::fTitle
//       0->0           Modified  = True if directory has been modified                    TDirectory::fModified
//       1->1           Writable = True if directory is writable                           TDirectory::fWriteable
//       2->5           DatimeC   = Date and time when directory was created               TDirectory::fDatimeC
//                       | (year-1995)<<26|month<<22|day<<17|hour<<12|minute<<6|second
//       6->9           DatimeM   = Date and time when directory was last modified         TDirectory::fDatimeM
//                       | (year-1995)<<26|month<<22|day<<17|hour<<12|minute<<6|second
//      10->13          NbytesKeys= Number of bytes in the associated KeysList record      TDirectory::fNbyteskeys
//      14->17          NbytesName= Number of bytes in TKey+TNamed at creation             TDirectory::fNbytesName
//      18->21 [18->25] SeekDir   = Byte offset of directory record in file (64)           TDirectory::fSeekDir
//      22->25 [26->33] SeekParent= Byte offset of parent directory record in file (0)     TDirectory::fSeekParent
//      26->29 [34->41] SeekKeys  = Byte offset of associated KeysList record in file      TDirectory::fSeekKeys
