private static void Merge(ProtoReader reader, ref ProtoReader.State state, ref protogen.Database obj)
        {
            SubItemToken tok;
            int          field;

            if (obj == null)
            {
                obj = new protogen.Database();
            }
            while ((field = reader.ReadFieldHeader(ref state)) != 0)
            {
                switch (field)
                {
                case 1:
                    do
                    {
                        protogen.Order _1 = default;
                        tok = ProtoReader.StartSubItem(reader, ref state);
                        Merge(reader, ref state, ref _1);
                        ProtoReader.EndSubItem(tok, reader, ref state);
                        obj.Orders.Add(_1);
                    } while (reader.TryReadFieldHeader(ref state, 1));
                    break;

                default:
                    reader.AppendExtensionData(ref state, obj);
                    break;
                }
            }
        }
        public protogen.Database MemoryStream_Manual()
        {
            var model = RuntimeTypeModel.Default;

            using (var reader = ProtoReader.Create(out var state, Exposable(_data), model))
            {
                protogen.Database obj = default;
                Merge(reader, ref state, ref obj);
                return(obj);
            }
        }
        public protogen.Database ROM_Manual()
        {
            var model = RuntimeTypeModel.Default;

            using (var reader = ProtoReader.Create(out var state, new ReadOnlyMemory <byte>(_data), model))
            {
                protogen.Database obj = default;
                Merge(reader, ref state, ref obj);
                return(obj);
            }
        }
        public protogen.Database ROM_Manual()
        {
            var state = ProtoReader.State.Create(new ReadOnlyMemory <byte>(_data), RuntimeTypeModel.Default);

            try
            {
                protogen.Database obj = default;
                Merge(ref state, ref obj);
                return(obj);
            }
            finally
            {
                state.Dispose();
            }
        }
        public protogen.Database MemoryStream_Manual()
        {
            var state = ProtoReader.State.Create(ExposableData(), RuntimeTypeModel.Default);

            try
            {
                protogen.Database obj = default;
                Merge(ref state, ref obj);
                return(obj);
            }
            finally
            {
                state.Dispose();
            }
        }