public ListDefinition CreateListDefinition(string name, MultiLevelType multiLevelType, string?nsid = null, string?tmpl = null, bool?restartNumberingAfterBreak = null)
        {
            var root          = GetOrCreatePackagePartAndDocumentRoot();
            var abstractNumId = GetMaxAbstractNumId() + 1;

            var xml = new XElement(Namespaces.w + "abstractNum",
                                   new XAttribute(Namespaces.w + "abstractNumId", abstractNumId),
                                   new XElement(Namespaces.w + "name", new XAttribute(Namespaces.w + "val", name)),
                                   new XElement(Namespaces.w + "nsid", new XAttribute(Namespaces.w + "val", nsid ?? "")),
                                   new XElement(Namespaces.w + "tmpl", new XAttribute(Namespaces.w + "val", tmpl ?? "")),
                                   new XElement(Namespaces.w + "multiLevelType", new XAttribute(Namespaces.w + "val", multiLevelType.ToCamelCase()))
                                   );

            if (restartNumberingAfterBreak.HasValue)
            {
                xml.SetAttributeValue(Namespaces.w + "restartNumberingAfterBreak", restartNumberingAfterBreak);
            }

            root.Add(xml);
            return(new ListDefinition(xml));
        }