/// <summary>
        /// Illustrates caching for methods with complex comparable arguments.
        /// </summary>
        /// <param name="service"></param>
        private static void ComplexTypeTest(IMyService service)
        {
            var sharedObject = new ComplexType {
                Name = "Isaac", Age = 32
            };
            var referenceType = service.ComplexTypeArgument(sharedObject);

            Console.WriteLine();
            referenceType = service.ComplexTypeArgument(sharedObject);
            Console.WriteLine();

            var differentObject = service.ComplexTypeArgument(new ComplexType {
                Name = "Isaac", Age = 32
            });

            Console.WriteLine();
            var differentValues = service.ComplexTypeArgument(new ComplexType {
                Name = "Isaaced", Age = 35
            });

            Console.WriteLine();
        }
        /// <summary>
        /// Illustrates caching for methods with complex comparable arguments.
        /// </summary>
        /// <param name="service"></param>
        private static void ComplexTypeTest(IMyService service)
        {
            var sharedObject = new ComplexType { Name = "Isaac", Age = 32 };
            var referenceType = service.ComplexTypeArgument(sharedObject);
            Console.WriteLine();
            referenceType = service.ComplexTypeArgument(sharedObject);
            Console.WriteLine();

            var differentObject = service.ComplexTypeArgument(new ComplexType { Name = "Isaac", Age = 32 });
            Console.WriteLine();
            var differentValues = service.ComplexTypeArgument(new ComplexType { Name = "Isaaced", Age = 35 });
            Console.WriteLine();
        }