private static T Read(Reader reader, string key)
        {
            Stream stream = reader.Stream;
            T      obj    = Factory <T> .New();

            reader.AddReference(obj);
            MembersReader.ReadAllMembers(reader, key, ref obj);
            stream.ReadByte();
            return(obj);
        }
        private static T Read(Reader reader, string key)
        {
            Stream stream = reader.Stream;
            T      obj    = Factory <T> .New();

            reader.AddReference(null);
            int refIndex = reader.LastReferenceIndex;

            MembersReader.ReadAllMembers(reader, key, ref obj);
            reader.SetReference(refIndex, obj);
            stream.ReadByte();
            return(obj);
        }