private void EmbedHostItem(string itemName, object value)
        {
            InvokeScript(() =>
            {
                object oldValue = null;
                if (_hostItems.ContainsKey(itemName))
                {
                    oldValue = _hostItems[itemName];
                }
                _hostItems[itemName] = value;

                try
                {
                    _activeScriptWrapper.AddNamedItem(itemName, ScriptItemFlags.IsVisible | ScriptItemFlags.GlobalMembers);
                }
                catch (Exception)
                {
                    if (oldValue != null)
                    {
                        _hostItems[itemName] = oldValue;
                    }
                    else
                    {
                        _hostItems.Remove(itemName);
                    }

                    throw;
                }
            });
        }