public void GivenParametersOfSameNameWhenGetOrCacheCalledThenShouldReturnSameInstance()
        {
            var target = new SerializationState();
            var param1 = Expression.Parameter(typeof(int));
            var param2 = Expression.Parameter(typeof(int), nameof(target));
            var param3 = Expression.Parameter(typeof(int), nameof(param1));
            var param4 = Expression.Parameter(typeof(int));
            var param5 = Expression.Parameter(typeof(int), nameof(target));
            var cache1 = target.GetOrCacheParameter(param1);
            var cache2 = target.GetOrCacheParameter(param2);
            var cache3 = target.GetOrCacheParameter(param3);
            var cache4 = target.GetOrCacheParameter(param4);
            var cache5 = target.GetOrCacheParameter(param5);

            Assert.Same(param1, cache1);
            Assert.Same(param2, cache2);
            Assert.Same(param3, cache3);
            Assert.NotSame(param4, cache4);
            Assert.Same(param1, cache4);
            Assert.NotSame(param5, cache5);
            Assert.Same(param2, cache5);
        }