public void AddNewValue(string identifier, VariableState value)
        {
            if (VariableStates.ContainsKey(identifier)) //New variable in a different scope
            {
                Logger.Log("Removing existing state for " + identifier);
                Variables.Remove(identifier);
            }

            Logger.Log($"Adding state for {identifier} ({value})");
            Variables.Add(identifier, value);
        }
        public void AddTag(string variableAccess, VariableTag httpCookieSecure)
        {
            if (DebugMode)
            {
                Logger.Log($"Adding tag '{httpCookieSecure}' to  {variableAccess}");
            }

            if (VariableStates.TryGetValue(variableAccess, out var variable))
            {
                variable.AddTag(httpCookieSecure);
            }
        }
        public void AddOrUpdateValue(string identifier, VariableState value)
        {
            if (VariableStates.ContainsKey(identifier)) //Override existing value
            {
                VariableStates[identifier].Replace(value);
                Logger.Log($"Updating state for {identifier} ({value})");
            }
            else
            {
                //Unexpected state
                Logger.Log($"Adding state for {identifier} ({value})");

                Variables.Add(identifier, value);
            }
        }
        public void MergeValue(string identifier, VariableState value)
        {
            if (VariableStates.ContainsKey(identifier)) //Override existing value
            {
                var state    = VariableStates[identifier];
                var newState = state.Merge(value);
                Variables.Remove(identifier);
                Variables.Add(identifier, newState);
                if (DebugMode)
                {
                    Logger.Log($"Merging state for {identifier} ({newState})");
                }
            }
            else
            {
                //Unexpected state
                if (DebugMode)
                {
                    Logger.Log($"Merging state for {identifier} ({value}) .. /!\\ unexpected state");
                }

                Variables.Add(identifier, value);
            }
        }