Here is the format of the DATA for a TRefArray object in Release 3.02.06.
--------
0->3 ByteCount = Number of remaining bytes in TRefArray object (uncompressed)
| OR'd with kByteCountMask (0x40000000)
4->5 Version = Version of TRefArray Class
6->15 = TObject object (Base class of TRefArray) (see Format of the DATA for a TObject object).
| Will be two bytes longer (6->17) if TRefArray object is
| itself referenced (unlikely).
16->.. fName = Number of bytes in name of TRefArray object, followed by the
| name itself. (TCollection::fName). Currently, TRefArrays
| are not named, so this is a single byte containing 0.
0->3 nObjects | Number of object references (fUIDs) in this TRefArray.
4->7 fLowerBound= Lower bound of array. Typically 0.
8->9 pidf = An identifier of the TProcessID record for the process that wrote the
| referenced objects. This identifier is an unsigned short. The relevant
| record has a name that is the string "ProcessID" concatenated with the
| ASCII decimal representation of "pidf" (no leading zeros).
| 0 is a valid pidf.
10->.. fUIDs = Sequentially, object Unique ID's.
| Each Unique ID is a four byte unsigned integer.
| If non-zero, it matches the Unique ID in the referenced
| object. If zero, it is an unused element in the array.
| The fUIDs are written out only up to the last used element,
| so the last fUID will always be non-zero.