private static bool SetVersionString(StringTable stringTable, string versionName, string value)
        {
            var matchingString = stringTable.Children.SingleOrDefault(s => s.szKey == versionName);
            if (matchingString != null)
            {
                if (matchingString.Value == value)
                    return false;
                matchingString.wType = 1;
                matchingString.Value = value;
                return true;
            }

            var children = stringTable.Children.ToList();
            var newString = new String { wType = 1, szKey = versionName, Value = value };
            children.Add(newString);
            stringTable.Children = children.ToArray();
            return true;
        }
 private static bool ProcessStringsInStringTable(StringTable stringTable, Func<string, string> process)
 {
     return stringTable.Children.Select(table => ProcessStringsInString(table, process)).AnyOfAll();
 }