The SafeNameDictionary allows for refering item->name without ensuring a safe name. This allows for item[0..*]->[1]name relations but maintaining name[1]->[1]item relations.
The SafeNameDictionary.ScopeLevel property can be set, opening/closing scopes.
Created constructors for the non-generic SafeNameDictionary.
Removed comment typo.
A field in a ClassElement can be any type of CodeElement.
Created a CloneFlat method in CodeElement (and subtypes) that generates a flattened clone of a CodeElement structure.