public void AddExtensionNamespace(string uri) {
Debug.Assert(uri != null);
uri = nameTable.Add(uri);
ScopeFlags lastFlags = records[lastRecord].scopeFlags;
// lastScopes == records[lastRecord].scopeCount; // we know this because we are cashing it.
bool canReuseLastRecord = (
lastScopes == 0 && // last record is from last scope
(lastFlags & ScopeFlags.NsExtension) == 0 // only flag fields are used in this record
);
if (! canReuseLastRecord) {
AddRecord();
lastFlags = lastFlags & ScopeFlags.InheritedFlags;
}
records[lastRecord].nsUri = uri;
records[lastRecord].scopeFlags = lastFlags | ScopeFlags.NsExtension;
}