Every list contains a standard initial header. This class provides the basic properties needed to access lists irrespective of the storage implementation.
 /// <summary>
 /// Constructs a new instance of <see cref="IntegerList"/> ready to 
 /// read entities from the source.
 /// </summary>
 /// <param name="dataSet">
 /// Dataset being created.
 /// </param>
 /// <param name="reader">
 /// Reader used to initialise the header only.
 /// </param>
 internal IntegerList(
     DataSet dataSet,
     Reader reader)
 {
     _header = new Header(reader);
     _dataSet = dataSet;
 }
 /// <summary>
 /// Constructs a new instance of <see cref="MemoryIntegerList"/>.
 /// </summary>
 /// <param name="reader">
 /// Reader connected to the source data structure and positioned to 
 /// start reading.
 /// </param>
 internal MemoryIntegerList(Reader reader)
 {
     Header = new Header(reader);
     _array = new int[Header.Count];
 }