public int GetPropertyId(LazyStringValue propName) { PropertyName prop; if (_propertyNameToId.TryGetValue(propName, out prop) == false) { var propIndex = _docPropNames.Count; propName = _context.Intern(propName); prop = new PropertyName { Comparer = propName, GlobalSortOrder = -1, PropertyId = propIndex }; _docPropNames.Add(prop); _propertiesSortOrder.Add(prop); _propertyNameToId[propName] = prop; _propertiesNeedSorting = true; if (_docPropNames.Count > PropertiesDiscovered + 1) { prop = SwapPropertyIds(prop); } PropertiesDiscovered++; } else if (prop.PropertyId >= PropertiesDiscovered) { if (prop.PropertyId != PropertiesDiscovered) { prop = SwapPropertyIds(prop); } PropertiesDiscovered++; } return(prop.PropertyId); }