public SessionRecord(byte[] serialized)
        {
            StorageProtos.RecordStructure record = StorageProtos.RecordStructure.ParseFrom(serialized);
            _sessionState = new SessionState(record.CurrentSession);
            _fresh        = false;

            foreach (StorageProtos.SessionStructure previousStructure in record.PreviousSessionsList)
            {
                _previousStates.AddLast(new SessionState(previousStructure)); // add -> AddLast (java)
            }
        }
        /**
         * @return a serialized version of the current SessionRecord.
         */
        public byte[] Serialize()
        {
            List <StorageProtos.SessionStructure> previousStructures = new List <StorageProtos.SessionStructure>();

            foreach (SessionState previousState in _previousStates)
            {
                previousStructures.Add(previousState.GetStructure());
            }

            StorageProtos.RecordStructure record = StorageProtos.RecordStructure.CreateBuilder()
                                                   .SetCurrentSession(_sessionState.GetStructure())
                                                   .AddRangePreviousSessions(previousStructures)
                                                   /*.AddAllPreviousSessions(previousStructures)*/
                                                   .Build();

            return(record.ToByteArray());
        }