internal override void Deserialize(DataReader dataReader)
        {
            uint size = dataReader.ReadUInt32();

                        FreeBlocks = new Stack<uint>();
                        for (int i = 0; i < size; i++)
                        {
                                FreeBlocks.Push(dataReader.ReadUInt32());
                        }
        }
        internal override void Deserialize(DataReader dataReader)
        {
            DataBlocks = new uint[POINTERS];

                        for (int i = 0; i < POINTERS; i++)
                        {
                                DataBlocks[i] = dataReader.ReadUInt32();
                        }
        }
        internal override void Deserialize(DataReader dataReader)
        {
            TotalBlocks = dataReader.ReadUInt32();
                        FreeBlocks = dataReader.ReadUInt32();
                        HighestDataBlock = dataReader.ReadUInt32();
                        TotalInodes = dataReader.ReadUInt32();
                        FreeIndexNodes = dataReader.ReadUInt32();
                        IndexNodesBlocks = dataReader.ReadUInt32();
                        FreeIndexNodesQueueMaxSize = dataReader.ReadUInt32();

                        FreeIndexNodesQueue = new Queue<uint>();
                        uint freeIndexNodesQueueSize = dataReader.ReadUInt32();
                        for (int i = 0; i < freeIndexNodesQueueSize; i++)
                        {
                                FreeIndexNodesQueue.Enqueue(dataReader.ReadUInt32());
                        }

                        FreeBlockStackMaxSize = dataReader.ReadUInt32();

                        FreeBlockStack = new Stack<uint>();
                        uint freeBlockStackSize = dataReader.ReadUInt32();
                        for (int i = 0; i < freeBlockStackSize; i++)
                        {
                                FreeBlockStack.Push(dataReader.ReadUInt32());
                        }
        }
 public static IndexNode Deserialize(DataReader dataReader, BlockManager blockManager)
 {
     return new IndexNode(blockManager)
                         {
                                 DataBlocks = dataReader.ReadUInt32(),
                                 DirectPointer1 = dataReader.ReadUInt32(),
                                 DirectPointer2 = dataReader.ReadUInt32(),
                                 DirectPointer3 = dataReader.ReadUInt32(),
                                 DirectPointer4 = dataReader.ReadUInt32(),
                                 SingleIndirectPointer = dataReader.ReadUInt32(),
                                 DoubleIndirectPointer = dataReader.ReadUInt32(),
                                 TripleIndirectPointer = dataReader.ReadUInt32()
                         };
 }