static void Main(string[] args)
        {
            #region test1

            var x = new MyObject1 {
                Name = "I only have one property"
            };
            var y = new MyObject1 {
                Name = "I am another instance"
            };

            var am = new AttachedPropertyManager2();

            am.Set(x, "MyAttachedProp", "Well hello there!");

            var result1 = am.Get(x, "MyAttachedProp");
            var result2 = am.Get(y, "MyAttachedProp");

            Console.WriteLine($"result1 should be \"Well hello there!\" : '{result1}'");
            Console.WriteLine($"result2 should be null or something : '{result2}'");

            #endregion

            x.GetVirtualPropertyThing();

            var x3 = new AttachedPropertyManager3();

            NewMethod(x3);

            GC.Collect();

            x3.ToString();
        }