protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            SetContentView(Resource.Layout.Main);

            var textView = FindViewById <TextView>(Resource.Id.textView);

            // test the sample bindings work

            var instance = new TestClass();
            var list     = instance.Test(new[] { "first", "second", "third" });

            textView.Text = $"There are {list.Count} items.\n\n";

            // test the magic for collections and related

            ICollection c = new Coll();
            IList       l = new List();
            IMap        m = new Map();
            ISet        s = new Set();

            textView.Text += $"Collection: {s.Size()} = {s.Contains("one")}; {c.Size()} = {c.Contains("one")}; {l.Size()} = {l.Get(1)}; {m.Size()} = {m.Get(1)}.\n\n";

            // test the magic for the spread builders

            var spreadBuilder = new BooleanSpreadBuilder(10);
            var array         = spreadBuilder.ToArray();

            textView.Text += $"\nArray size from spread builder: {array.Length}.\n\n";

            // test the magic for the reflection things

            var javaClass   = Java.Lang.Class.FromType(typeof(TestClass));
            var kotlinClass = JvmClassMappingKt.GetKotlinClass(javaClass);
            var members     = kotlinClass.Members;

            textView.Text += $"\nThere are {members.Count} members in TestClass.\n\n";

            var properties = KClasses.GetMemberProperties(kotlinClass);
            var firstProp  = properties.FirstOrDefault();

            textView.Text += $"\nThere are {properties.Count} properties in TestClass, the first is {firstProp.Name}: {firstProp.ReturnType}.\n\n";
        }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            SetContentView(Resource.Layout.Main);

            var textView = FindViewById <TextView>(Resource.Id.textView);

            // test the sample bindings work

            var instance = new TestClass();
            var list     = instance.Test(new[] { "first", "second", "third" });

            textView.Text = $"There are {list.Count} items.\n\n";

            // test the magic for collections and related

            ICollection c = new Coll();
            IList       l = new List();
            IMap        m = new Map();
            ISet        s = new Set();

            textView.Text += $"Collection: {s.Size()} = {s.Contains("one")}; {c.Size()} = {c.Contains("one")}; {l.Size()} = {l.Get(1)}; {m.Size()} = {m.Get(1)}.\n\n";

            // test the magic for the spread builders

            var spreadBuilder = new BooleanSpreadBuilder(10);
            var array         = spreadBuilder.ToArray();

            textView.Text += $"\nArray size from spread builder: {array.Length}.\n\n";

            // test the magic for the reflection things

            var javaClass   = Java.Lang.Class.FromType(typeof(TestClass));
            var kotlinClass = JvmClassMappingKt.GetKotlinClass(javaClass);
            var members     = kotlinClass.Members;

            textView.Text += $"\nThere are {members.Count} members in TestClass.\n\n";

            var properties = KClasses.GetMemberProperties(kotlinClass);
            var firstProp  = properties.FirstOrDefault();

            textView.Text += $"\nThere are {properties.Count} properties in TestClass, the first is {firstProp.Name}: {firstProp.ReturnType}.\n\n";

            // test is even interface

            for (int i = 0; i < 5; i++)
            {
                textView.Text += $"{instance.TestIsEven(3 * i)}\n";
            }

            // test bit operations from kotlin 1.4

            textView.Text += instance.TestBitOperations();

            // test unsigned things

            var uarray = instance.TestUnsignedArray();

            textView.Text += $"\nThere are {uarray.Length} items in uarray: {string.Join(", ", uarray)}.\n\n";
            var uval = instance.TestUnsigned();

            textView.Text += $"\nUnsigned integer: {uval}.\n\n";

            var uIntRange = URangesKt.Until(100, 200);

            textView.Text += $"\nUnsigned integer range: {uIntRange.Start} - {uIntRange.EndInclusive} contains 150: {uIntRange.Contains(150)}\n\n";

            IClosedRange closedRange = uIntRange;

            textView.Text += $"\nClosed range: {closedRange.Start} - {closedRange.EndInclusive} contains 150: {closedRange.Contains(150)}\n\n";
        }