public void MergeTestGSA_WithMerger()
        {
            var ls1  = new object[] { "PROP_SPR.4:{speckle_app_id:gh/a}", 1, "LSPxGeneral", "NO_RGB", "GENERAL", 0, 16, 0, 17, 0, 18, 0, 19, 0, 20, 0, 21, 0.21 };
            var gwa1 = string.Join(GSAProxy.GwaDelimiter.ToString(), ls1.Select(l => l.ToString()));

            PrepareInterfacerForGwaToSpeckle <GSASpringProperty>(gwa1, "PROP_SPR", "gh/a");

            //Call the ToSpeckle method, which just adds to the GSASenderObjects collection-
            GsaPropSprToSpeckle.ToSpeckle(new GsaPropSpr());
            var existing = (StructuralSpringProperty)Initialiser.GsaKit.GSASenderObjects.Get <GSASpringProperty>().First().Value;

            var newToMerge = new StructuralSpringProperty()
            {
                DampingRatio = 1.5
            };

            var speckleTypes = SpeckleUtil.Helper.GetLoadedSpeckleTypes();

            var mappingTypes       = new List <Type>();
            var assemblies         = AppDomain.CurrentDomain.GetAssemblies().Where(a => a.GetTypes().Any(t => typeof(ISpeckleInitializer).IsAssignableFrom(t))).ToList();
            var relevantAssemblies = assemblies.Where(a => a.FullName.Contains("GSA"));

            foreach (var assembly in relevantAssemblies)
            {
                foreach (var t in speckleTypes)
                {
                    var methods = SpeckleUtil.Helper.GetExtensionMethods(assembly, t, "ToNative");
                    if (methods != null && methods.Count() > 0)
                    {
                        mappingTypes.Add(t);
                    }

                    if (t.BaseType != null)
                    {
                        if (!mappingTypes.Contains(t.BaseType))
                        {
                            mappingTypes.Add(t.BaseType);
                        }
                    }
                }
            }

            var merger = new SpeckleObjectMerger();

            merger.Initialise(mappingTypes);

            var resultingObject = merger.Merge(newToMerge, existing);
        }
        public void MergeTestGSA()
        {
            var ls1  = new object[] { "PROP_SPR.4:{speckle_app_id:gh/a}", 1, "LSPxGeneral", "NO_RGB", "GENERAL", 0, 16, 0, 17, 0, 18, 0, 19, 0, 20, 0, 21, 0.21 };
            var gwa1 = string.Join(GSAProxy.GwaDelimiter.ToString(), ls1.Select(l => l.ToString()));

            PrepareInterfacerForGwaToSpeckle <GSASpringProperty>(gwa1, "PROP_SPR", "gh/a");

            //Call the ToSpeckle method, which just adds to the GSASenderObjects collection
            GsaPropSprToSpeckle.ToSpeckle(new GsaPropSpr());
            var existing = (StructuralSpringProperty)Initialiser.GsaKit.GSASenderObjects.Get <GSASpringProperty>().First().Value;

            var newToMerge = new StructuralSpringProperty()
            {
                DampingRatio = 1.5
            };

            var m = SetupGSAMerger();

            var resultingObject = m.Map(newToMerge, existing);
        }