internal StateMap(Serializers serializers, IReadOnlyDictionary <string, object> currentState)
        {
            _serializers = serializers;
            _entries     = new Dictionary <string, Entry>();

            foreach (var(key, value) in currentState)
            {
                _entries[key] = new Entry(value);
            }

            _serializables = currentState
                             .Where(kv => kv.Value != null && serializers.IsSerializable(kv.Value))
                             .ToDictionary(kv => kv.Key, kv => serializers.AddAndWrapUp(kv.Value));
        }