private static void ProcessSetElement(XElement element, StringIDSetResolver resolver)
        {
            // Get the set's ID from the "id" attribute
            XAttribute idAttribute = element.Attribute("id");
            if (idAttribute == null)
                throw new ArgumentException("StringID set tags must have an \"id\" attribute");
            short id = (short)ParseNumber(idAttribute.Value);

            // Get the set's min index from the "min" attribute (optional, defaults to 0)
            ushort min = 0;
            XAttribute minAttribute = element.Attribute("min");
            if (minAttribute != null)
                min = (ushort)ParseNumber(minAttribute.Value);

            // Get the set's global index from the "startIndex" attribute
            XAttribute startIndexAttribute = element.Attribute("startIndex");
            if (startIndexAttribute == null)
                throw new ArgumentException("String id set tags must have a \"startIndex\" attribute");
            int globalIndex = ParseNumber(startIndexAttribute.Value);

            // Register the set
            resolver.RegisterSet(id, min, globalIndex);
        }