static void Main(string[] args)
        {
            DressRehearsal_InputToOutput();
            //var s = new List<string> { "test", "test2" };
            //var res = PrelimReverseMarshaller.marshalFrom(s);
            //var res = PrelimReverseMarshaller.marshalFromObject(new testObj());
            Player player = new Player();
            player = Marshaller.unmarshalFrom<Player>(test_target);
            var res2 = Marshaller.marshalFromObject(player);
            var resStr2 = Marshaller.marshalFromListBlock(res2);
            var res = Marshaller.marshalFromObject(new testObj());
            var resStr = Marshaller.marshalFromListBlock(res);
            Debug.WriteLine(resStr);
            Debug.WriteLine(resStr2);

            var i = 0;

            while (i < 1)
            {
                using (var ctx = new WastelandA23.Model.CodeFirstModel.LoadoutContext())
                {
                    Database.SetInitializer(new WastelandA23.Model.Init.LoadoutContextSeed(true));
                    ctx.Database.Initialize(true);
                }

                using (var ctx = new WastelandA23.Model.CodeFirstModel.LoadoutContext())
                {
                    var type_maps = Mapper.GetAllTypeMaps();
                    //Mapper.CreateMap<Item, WastelandA23.Model.CodeFirstModel.Item>().Include<Magazine, WastelandA23.Model.CodeFirstModel.Magazine>();
                    var model_player = Mapper.Map<WastelandA23.Model.CodeFirstModel.Player>(player);
                    ctx.Players.Add(model_player);
                    ctx.SaveChanges();

                }

                using (var ctx = new WastelandA23.Model.CodeFirstModel.LoadoutContext())
                {
                    var backpack = ctx.Backpacks.First();
                    ctx.Backpacks.Remove(backpack);
                    ctx.SaveChanges();

                    var p = ctx.Players.FirstOrDefault();
                    ctx.Players.Remove(p);
                    ctx.SaveChanges();
                }

                i++;
            }

            Console.ReadLine();
        }
        private static void DressRehearsal_InputToOutput()
        {
            TypeMapper.Map<Player, WastelandA23.Model.CodeFirstModel.Player>(new Player(), new WastelandA23.Model.CodeFirstModel.Player());

            TypeConverter.SetConverters(new WastelandTypeConversionDictionary());

            string input = test_target;
            // from SQF-String to player class hierarchy
            Player player = Marshaller.unmarshalFrom<Player>(input);
            var typeMap = Mapper.GetAllTypeMaps();
            //var CFItemMag = typeMap.Where(_ => _.SourceType == typeof(WastelandA23.Model.CodeFirstModel.Item)).FirstOrDefault();
            //CFItemMag.IncludeDerivedTypes(typeof(WastelandA23.Model.CodeFirstModel.Magazine), typeof(Magazine));

            //var MapsWithInheritance = typeMap.Where(_ => _.IncludedDerivedTypes.Any());
            WastelandA23.Model.CodeFirstModel.Player db_player = null;
            string output = null;

            // drop and recreate database
            using (var ctx = new WastelandA23.Model.CodeFirstModel.LoadoutContext())
            {
                Database.SetInitializer(new WastelandA23.Model.Init.LoadoutContextSeed(true));
                ctx.Database.Initialize(true);
            }

            // from player class hierarchy to database via AutoMapper and Entity Framework
            using (var ctx = new WastelandA23.Model.CodeFirstModel.LoadoutContext())
            {
                var type_maps = Mapper.GetAllTypeMaps();
                //Mapper.CreateMap<Item, WastelandA23.Model.CodeFirstModel.Item>().Include<Magazine, WastelandA23.Model.CodeFirstModel.Magazine>();
                var model_player = Mapper.Map<WastelandA23.Model.CodeFirstModel.Player>(player);
                ctx.Players.Add(model_player);
                ctx.SaveChanges();
            }
                using (var ctx = new WastelandA23.Model.CodeFirstModel.LoadoutContext())
                {
                    db_player = ctx.Players.Where(_ => _.PlayerInfo.UID == player.PlayerInfo.UID).Include(_ => _.Loadout.AssignedItems).FirstOrDefault();
                    Player outputPlayer = new Player();
                    //Mapper.CreateMap<WastelandA23.Model.CodeFirstModel.Player, Player>();
                    outputPlayer = Mapper.Map(db_player, outputPlayer);
                    output = Marshaller.marshalFromListBlock(Marshaller.marshalFromObject(outputPlayer));
                    Debug.WriteLine(output);
                }
        }