public void Load(IHttpContext httpContext)
        {
            var sessionContext = SessionStateContext.Create(httpContext);

            if (!sessionContext.HasActiveSession())
            {
                return;
            }
            var values = ItemsWithCompatableDataTypes(_sessionProvider.Load(sessionContext));

            if (!values.Any())
            {
                httpContext.SessionState.RemoveAll();
                return;
            }
            values.Where(x => !httpContext.SessionState.Any(y => y.Key == x.Key) ||
                         httpContext.SessionState[x.Key] != x.Value).
            ToList().ForEach(x => httpContext.SessionState[x.Key] = x.Value);
            httpContext.SessionState.Where(x => !values.ContainsKey(x.Key)).ToList().
            ForEach(x => httpContext.SessionState.Remove(x.Key));
        }