public void ProcessMultipleGameDescriptor(List <GameDescriptor> gameDescriptors, Dictionary <string, MemoryStream> images)
    {
        if (gameDescriptors.Count == 0)
        {
            return;
        }

        GameDescriptor root = GetRootDescriptor(gameDescriptors);

        if (root == null)
        {
            root = gameDescriptors[0];
        }
        string gameName        = root.gameName;
        string version         = root.version ?? "";
        string gameStorageName = gameName + "_" + version;

        if (PersistanceHelper.CheckGameDirectory(gameStorageName))
        {
            SetExistingGemAsCurrent(gameStorageName);
            return;
        }

        elementManager         = new GameElementManager(gameStorageName);
        elementManager.DefLang = root.GameProperties.defaultLang;
        PersistanceHelper.CreateStorage(gameStorageName);
        PersistanceHelper.StoreImages(gameStorageName, images);
        foreach (GameDescriptor descripor in gameDescriptors)
        {
            ProcessGameDescriptor(descripor);
        }
        if (OnReferenceProcessing != null)
        {
            OnReferenceProcessing(null, EventArgs.Empty);
        }
        elementManager.SetFirstRoom();
        PersistanceHelper.StoreInitialGEM(gameStorageName, elementManager);
        ObjectManager.CurrentGEM = elementManager;
    }