private static IValue GetStructureVersionHolder(this IVault vault) { // Load all possible version holders var versionHolder1 = vault.GetValue("$version"); var versionHolder2 = vault.GetValue("$format"); var versionHolder3 = vault.GetValue("$structureversion"); // Get version token from the latest holder var genuineHolder = versionHolder3 ?? versionHolder2 ?? versionHolder1; genuineHolder = genuineHolder ?? vault.CreateValue("$structureversion"); var genuineVersion = genuineHolder.ContentString; // Ensure that all kinds of version holders are present in the vault (backward compat!) versionHolder1 = versionHolder1 ?? vault.GetOrCreateValue("$version"); versionHolder2 = versionHolder2 ?? vault.GetOrCreateValue("$format"); versionHolder3 = versionHolder3 ?? vault.GetOrCreateValue("$structureversion"); var allHolders = new [] { versionHolder1, versionHolder2, versionHolder3 }; // Now synchronize all version signatures across all holders foreach (var anyVersionHolder in allHolders) { if (anyVersionHolder != null) { anyVersionHolder.SetContent(genuineVersion); } } // Return only the latest holder return(genuineHolder); }