private void WriteChildren(SecurityElement currentElement, object currentContent, int tagIndex) {
IDictionaryEnumerator contentEnumerator = ((Hashtable)currentContent).GetEnumerator();
while(contentEnumerator.MoveNext()) {
SecurityElement contentElement = new SecurityElement(this.TagNames[tagIndex]);
currentElement.AddChild(contentElement);
contentElement.AddAttribute("name", (string)contentEnumerator.Key);
if (tagIndex < (this.TagNames.Length -1))
WriteChildren(contentElement, contentEnumerator.Value, tagIndex + 1);
else {
String accessString = null;
int currentAccess = (int)contentEnumerator.Value;
if (this.PermissionAccessType != null && currentAccess != 0) {
accessString = Enum.Format(PermissionAccessType, currentAccess, "g");
contentElement.AddAttribute("access", accessString);
}
}
}
}