public void PrivateInstance_InferredName()
            {
                MethodInfo methodInfo = null;

                // Partially generic overload
                methodInfo = MR.GetMethodInfo <PrivateInstance>(typeof(TestClass), false);
                XAssert.NotNull(methodInfo);
            }
            public void ProtectedStatic_OutParam()
            {
                // Signature with out param should not match signature with ref param
                XAssert.Throws <MissingMethodException>(() => MR.GetMethodInfo <ProtectedStatic_inrefint>(typeof(TestClass), "ProtectedStatic", true));

                var methodInfo = MR.GetMethodInfo <ProtectedStatic_inoutint>(typeof(TestClass), "ProtectedStatic", true);

                XAssert.NotNull(methodInfo);
            }
            public void PrivateStatic_InferredName()
            {
                MethodInfo methodInfo = null;

                // Fully generic overload
                methodInfo = MR.GetMethodInfo <TestClass, PrivateStatic>(true);
                XAssert.NotNull(methodInfo);

                // Partially generic overload
                methodInfo = MR.GetMethodInfo <PrivateStatic>(typeof(TestClass), true);
                XAssert.NotNull(methodInfo);
            }
            public void PrivateStatic_ExplicitName()
            {
                MethodInfo methodInfo = null;

                // Case-sensitive name
                methodInfo = MR.GetMethodInfo <PrivateStatic_int>(typeof(TestClass), "PrivateStatic", true);
                XAssert.NotNull(methodInfo);

                // Case-sensitive name - should fail
                XAssert.Throws <MissingMethodException>(() => MR.GetMethodInfo <PrivateStatic_int>(typeof(TestClass), "privatestatic", true));

                // Case-insensitive name
                methodInfo = MR.GetMethodInfo <PrivateStatic_int>(typeof(TestClass), "privatestatic", true, true);
                XAssert.NotNull(methodInfo);
            }
            public void ProtectedInstance_ExplicitName()
            {
                MethodInfo methodInfo = null;

                // Case-sensitive name
                methodInfo = MR.GetMethodInfo <ProtectedInstance_int>(typeof(TestClass), "ProtectedInstance", false);
                XAssert.NotNull(methodInfo);

                // Case-sensitive name - should fail
                XAssert.Throws <MissingMethodException>(() => MR.GetMethodInfo <ProtectedInstance_int>(typeof(TestClass), "protectedinstance", false));

                // Case-insensitive name
                methodInfo = MR.GetMethodInfo <ProtectedInstance_int>(typeof(TestClass), "protectedinstance", false, true);
                XAssert.NotNull(methodInfo);
            }