Yep I see this was an incorrect implementation. I guess you can have now a map of sets. An alias can now map to a set of SchemaObjects. Note the map must be case insensitive on keys.
I forgot to mention that we will get rid of the single OidRegistry, or at least that we will have to modify the lookups in this registry to pass the SchemaObjectType as a parameter.
The rational for this change is that RFCs says we can have a name used for more than one type of SO. For instance, the 'audio' name is used as an AT and as a LdapSyntax . Obviously, the oid -> name relation can't work, so we can't do a getOid( name ) and get a single OID when name=audio.
The change in the API will be to add the SO :
getOid( AT, 'audio' ) to get the OID for the audio AT
getOid( LS, 'audio' ) to get the OID for the audio LS
That means we store more than one map in the OidRegistry.
Not such a big change though.